티스토리 뷰

▶ 리스트 ( List )

 

리스트 자료형이란?

List명 = [요소1, 요소2, 요소3, ... ]
List = [1,2,3,4,5,6,7,8,9]

C나 Java에서는 List[] 이렇게 선언을 했지만 파이썬에서는 단순히 리스트명 만 사용해서 선언할 수 있다.

내가 리스트를 사용하면서 실수했던 부분이다.

 

 


▶ 여러가지 리스트 표현

 

비어 있는 리스트는 ' 리스트명 = list() ' 으로 생성할 수 있다.

# 비어 있는 리스트 생성

1) a = list()
2) a = []
# 숫자 리스트
num = [1,2,3,4,5]

# 문자열 리스트
String = ['Python', 'Java', 'C++']

# 숫자, 문자열 리스트
List = [0, 100, 'Python', 'Java']

# 요솟값이 리스트인 리스트
List = [0, 100, ['Python', 'Java']]

리스트 안에는 어떠한 자료형도 요솟값으로 사용할 수 있다.

 

 

 


▶ 리스트 index

 

문자열의 인덱스와 같다.

List = ['Python', 'Java', 1, 2, [3, 4]]

>>> List[0]
Python

>>> List[3]
2

리스트 인덱스 역시 0부터 시작한다.

index:	0	1	2	3	4

요소:	Python  Java 	1 	2	[3, 4]

위 리스트 List의 index에 따른 요솟값이다.

여기서 4번째 요소는 리스트 자료형이여서 그대로 나온다.

>>> List[4]
[3, 4]

>>> List[-1]
[3, 4]

>>> List[-1][0]
3

>>> List[-1][1]
4

리스트 List에 포함된 [3, 4] 리스트 안의 요솟값을 출력하려면 List[-1] 또는 List[4] 에서

List[ ][ ] 두 번째 대괄호에 해당 요솟값의 index를 넣어주면 된다.

 

 

더보기

* 삼중 리스트에서 인덱싱

List = ['Python', ['Java', 'Script'], ['a', 'b', ['c', 'd', 'e']]]

 이러한 리스트가 있다면, 

>>> List[0]
Python

>>> List[1]
['Java', 'Script']

>>> List[2]
['a', 'b', ['c', 'd', 'e']]

이렇게 출력될 수 있다. 그렇다면 List[2]의 'c' 와 'd' 를 출력하려면?

어렵지 않다. 이중 리스트와 같이 사용하면 된다.

>>> List[2][2][0]
c

>>> List[2][2][1]
d

 

 

 


▶ 리스트 슬라이싱

 

역시나 문자열의 슬라이싱과 같다.

파이썬에서 ' 문자열 슬라이싱 ' 기능 보고 놀랐었다. 

 

리스트명 [ 시작 index : 끝 index ]
리스트명 [ 시작 index :  ]	# '시작 인덱스' 부터 마지막 요소까지

리스트명 [  : 끝 index ]		# 첫 번째 요소부터 '끝 인덱스' 까지

끝 index는 여전히 포함하지 않는다. < 시작 index > ~ < 끝 index -1 > 까지 나타낸다고 보면 쉽다.

 

문자열 슬라이싱 예시 :

String = "I love Python. I also love Java."

>>> String[0:14]
I love Python.

>>> String[15:32]
I also love Java.

 

리스트 슬라이싱 예시 :

List = [a, b, c, d, e, f, g]
      # 0  1  2  3  4  5  6

>>> List[0:3]
[a, b, c]

>>> List[:4]
[a, b, c, d]

>>> List[3:]
[d, e, f, g]
더보기

* 중첩 리스트에서 슬라이싱

List = [a, b, ['c', 'd', 'e'], f, g]
      # 0  1   2               3  4
      #        0     1    2

>>> List[1:4]
[b, ['c', 'd', 'e'], f]

>>> List[2][0:2]
['c','d']

C에서 이중 배열을 사용하는 방법과 비슷해서 금방 익숙해질 듯 싶다.

# 으로 주석처리 해둔 숫자가 각 리스트 인덱스 번호이다. 

 

 

 


▶ 리스트 연산

 

▷▷ 더하기 (+)

 

여러 리스트를 합쳐 한 리스트로 표현하는 것이 파이썬에서는 무척이나 쉽다.

단지 (+) 기호만 사용하면 리스트를 합칠 수 있다.

 

리스트1 + 리스트2 = 리스트3   # (리스트1 요소 + 리스트2 요소)
A = [1,2]
B = [3,4,5]

>>> A + B
[1,2,3,4,5]

이렇게 리스트끼리 더하기(+) 기호를 사용해서 숫자끼리의 합이 아닌, 문자열 더하기와 같은 기능을 한다.

 

 

 

▷▷ 곱하기 (*)

 

곱하기(*) 기호를 사용하면, 리스트의 요소가 여러 번 반복되어 새로운 리스트를 만들 수 있다.

리스트1 * 3 = 리스트2   # [리스트1 요소, 리스트1 요소, 리스트1 요소]
A = [a, b, c]

>>> A * 3
[a, b, c, a, b, c, a, b, c]	# 3번 반복

N번 곱하게 되면 이렇게 리스트의 요소를 N번 반복한다. 문자열 곱하기와 같은 기능을 한다.

 

 

 

 


▶ 리스트 길이

 

▷▷ len

 

len() 함수는 상당히 중요한 함수이다. 문자열, 리스트, 튜플, 딕셔너리 등에도 사용한다. 

 

문자열 len함수 사용 예시 :

String = "Python is so easy."
        # 123456789012345678
        #          1
        
>>> len(String)
18

리스트 len함수 사용 예시 :

List = ['a', 'b', 'c', 'd', 'e']
       # 1    2    3    4    5 

>>> len(List)
5
List = ['a', 'b', [1, 2, 3], 'c', 'd', 'e']
       # 1    2    3          4    5    6

>>> len(List)
6

중첩 리스트에서 리스트 안의 리스트는 리스트 하나 당 길이 1로 본다. (주의)

 

 

 

 


▶ 리스트 함수

 

▷▷ 수정 / 삭제

 

리스트 요솟값 수정은 단순히 해당 인덱스에 바꿀 값을 대입해주면 된다.

List = [0, 2, 4]

>>> List[1] = 100

#input
print(List)

#output
[0, 100, 4]

엄청 간단하다~!

 

 

 

▷▷ 수정 / 삭제

 

리스트 요소 삭제는  del()  함수를 이용하여 요소를 삭제할 수 있다. 

del 리스트[인덱스]

del 리스트[슬라이싱]
List = [0, 2, 4]

>>> del List[1]

#input
print(List)

#output
[0,4]

del 리스트[N] 으로 사용하며, N번째 요솟값을 삭제하게 된다.

여기서 N에 들어가는 것은 index 뿐만 아니라, 리스트 슬라이싱 기법도 활용할 수 있다.

List = [0, 2, 4, 6, 8, 10]
      # 0  1  2  3  4  5

>>> del List[1:4]	# 1번 ~ 3번까지 삭제
			# 남는 것 : 0, 4, 5번

#input
print(List)

#output
[0, 8, 10]

 

 

del 함수 이외에 리스트 요소 제거에는 remove 함수와 pop 함수가 있다.

함수 기능
del x[a] 리스트 xa 번째 요소 삭제
remove(x) 리스트에서 첫 번째로 나오는 x 를 삭제
pop() 리스트의 맨 마지막 요소를 돌려주고 해당 요소 삭제
pop(a) 리스트의 a 번째 요소를 돌려주고 해당 요소 삭제

 

▷▷ remove

리스트.remove(x)

remove 함수의 사용 기본 형태이다.

List = [1, 2, 1, 2, 3, 1]

>>> List.remove(1)

#input
print(List)

#output
[2, 1, 2, 3, 1]

1과 같은 요소를 리스트를 처음부터 보았을 때 첫 번째로 나오는 1을 삭제했다.

리스트 List에는 1이 List[0], List[2], List[5] 에 있었지만 첫 번째인 List[0]만 삭제됐다.

 

 

▷▷ pop

리스트.pop()

pop 함수의 사용 기본 형태이다.

List = [1, 2, 3]

>>> List.pop
3

#input
print(List)

#output
[1, 2]

push & pop 의 그 pop 인가.

pop 함수를 사용하여 마지막 요소를 끄집어 낸다. 마지막 요소를 돌려준 후 그 요소는 리스트에서 삭제가 되는 것을 볼 수 있다.

또는 pop() 함수 인수에 숫자를 넣어 해당 번째의 요소를 돌려준 후 리스트에서 삭제할 수 있다.

 

List = [1, 2, 3]

>>> List.pop(0)
1

#input
print(List)

#output
[2, 3]

 

 


함수 기능
append(x) 리스트의 맨 마지막에 x 요소를 추가
sort() 리스트의 요소를 숫자 또는 알파벳 순서대로 정렬
reverse() 순서대로가 아닌, 해당 리스트를 마지막부터 역순으로 뒤집기
index(x) 리스트에 x 값이 있다면 해당 x 의 위치 값을 반환
insert(a, b) 리스트의 a 번째 위치에 b 를 삽입
count(x) 리스트에 x가 몇 개 존재하는지 조사하여 개수 반환
extend(list) 원래의 리스트에 list 리스트를 더하여 확장
더하기(+) 기능과 같음

 

▷▷ append

리스트.append(값)
List = [1, 2, 3, 4, 5]

List.append(6)
[1, 2, 3, 4, 5, 6]

List.append([7, 8, 9])
[1, 2, 3, 4, 5, 6, [7, 8, 9]]

값에는 숫자 뿐 아니라 리스트도 올 수 있다. 어떠한 자료형도 가능하다.

 

 

 

▷▷ sort

리스트.sort()
List = [1, 3, 2, 4]

List.sort()
[1, 2, 3, 4]
List = ['a', 'c', 'd', 'b']

List.sort()
[a, b, c, d]

빠르고 쉽게 리스트를 순서대로 배열할 수 있는 함수이다.

 

 

 

 

▷▷ reverse

리스트.reverse()
List = [1, 2, 3, 4, 5, 6, 7, 8, 9]

List.reverse()
[9, 8, 7, 6, 5, 4, 3, 2, 1]

역.순 !

 

 

 

 

▷▷ index

리스트.index(값)
List = [1, 2, 3, 4, 5]
      # 0  1  2  3  4 

>>> List.index(3)
2

>>> List.index(5)
4

index(num) 함수에서 num과 같은 값이 리스트에 있으면 num값의 위치 값을 반환해준다.

리스트에 없는 값을 인자에 넣으면 당연히 오류난다.

 

 

 

 

▷▷ insert

리스트.insert(위치 값, 값)
List = [1, 2, 3, 4, 5]
      # 0  1  2  3  4

>>> List.insert(2, 'a')
 [1, 2, 'a', 3, 4, 5]
# 0  1   2   3  4  5

해당 위치 값에 해당 값을 넣은 후, 나머지는 뒤로 밀린다.

 

 

 

 

▷▷ count

리스트.count(값)
List = [1, 1, 1, 1, 2, 2, 3, 4, 4]

>>> List.count(1)
4

>>> List.count(3)
1

해당 값이 리스트에 몇 개가 있는지 count 함수를 이용하여 간단하게 알 수 있다.

 

 

 

 

▷▷ extend

리스트.extend(리스트2)
List = ['a', 'b', 'c']

>>> List.extend(['d', 'e'])
['a', 'b', 'c', 'd', 'e']

List2 = [1, 2, 3]

>>>List.extend(List2)
['a', 'b', 'c', 'd', 'e', 1, 2, 3]

리스트의 더하기(+) 와 동일한 기능이다.

더하기(+) 기호 또는 extend() 함수로 두 리스트를 합칠 수 있다.

차이점은 extend() 함수는 해당 리스트에 요소를 합친 것이다.

 

 

 

 

 


 

댓글