점프 투 파이썬 - 리스트 자료형
Language/Python

점프 투 파이썬 - 리스트 자료형

뉴비뉴 2019. 7. 6.

리스트를 사용하면 1,3,5,7,9 숫자 모음을 다음과 같이 간단하게 표현할 수 있다.

>>> odd = [1,3,5,7,9]

리스트를 만들 때는 위에서 보는 것과 같이 대괄호([ ])로 감싸 주고 각 요솟값은 쉼표로 구분해준다.

>>> a = [] [!] 비어 있는 리스트는 a = list()로 생성할 수도 있다.

>>> b = [1,2,3]

>>> c = ['Life', 'is', 'too', 'short']

>>> d = [1,2,'Life','is]

>>> e = [1,2, ['Life', 'is']]

 

리스트의 인덱싱과 슬라이싱

리스트도 문자열처럼 인덱싱과 슬라이싱이 가능하다.

 

리스트의 인덱싱

리스트 역시 문자열처럼 인덱싱을 적용할 수 있다.

>>> a = [1,2,3]

>>> a

[1,2,3]

 

a[0]은 리스트 a의 첫 번째 요솟값을 말한다.

>>> a[0]

1

 

>>> a[0] + a[2]

4

 

>>> a[-1]

3

 

이번에는 다음 예처럼 리스트 a를 숫자 1,2,3과 또 다른 리스트인['a','b','c']를 포함하도록 만들어보자.

>>> a = [1,2,3, ['a','b','c']]

 

>>> a[0]

1

 

>>> a[-1]

['a','b','c']

 

>>> a[3]

['a','b','c']

 

그렇다면 여기에서 리스트 a에 포함된 ['a','b','c'] 리스트에서 'a' 값을 인덱싱을 사용해 끄집어낼 수 있는 방법은 없을까?

 

>>> a[-1][0]

'a'

위와 같이 하면 'a'를 끄집어낼 수 있다.

 

다음 예도 마찬가지 경우이므로 어렵지 않게 이해될 것이다.

>>> a[-1][1]

'b'

>>> a[-1][2]

'c'

 

[삼중 리스트에서 인덱싱하기]

조금 복잡하지만 다음 예를 따라 해 보자.

>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]

리스트 a 안에 ['a', 'b', ['Life', 'is']] 리스트가 포함되어 있고, 그 리스트 안에 다시 ['Life', 'is'] 리스트가 포함되어 있다.

삼중 구조의 리스트이다.

이 경우 'Life' 문자열만 끄집어내려면 다음과 같이 해야 한다.

>>> a[2][2][0] 'Life'

위 예는 리스트 a의 세 번째 요소인 리스트 ['a', 'b', ['Life', 'is']]에서 세 번째 요소인 리스트 ['Life', 'is']의 첫 번째 요소를 나타낸다.

이렇듯 리스트를 삼중으로 중첩해서 쓰면 혼란스럽기 때문에 자주 사용하지는 않지만 알아두는 것이 좋다.

 

[삼중 리스트에서 인덱싱하기]

조금 복잡하지만 다음 예를 따라 해 보자.

>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]

리스트 a 안에 ['a', 'b', ['Life', 'is']] 리스트가 포함되어 있고, 그 리스트 안에 다시 ['Life', 'is'] 리스트가 포함되어 있다. 삼중 구조의 리스트이다.

이 경우 'Life' 문자열만 끄집어내려면 다음과 같이 해야 한다.

>>> a[2][2][0] 'Life'

위 예는 리스트 a의 세 번째 요소인 리스트 ['a', 'b', ['Life', 'is']]에서 세 번째 요소인 리스트 ['Life', 'is']의 첫 번째 요소를 나타낸다.

이렇듯 리스트를 삼중으로 중첩해서 쓰면 혼란스럽기 때문에 자주 사용하지는 않지만 알아두는 것이 좋다.

 

리스트의 슬라이싱

문자열과 마찬가지로 리스트에서도 슬라이싱 기법을 적용할 수 있다.

슬라이싱은 '나눈다'는 뜻이라고 했다.

 

>>> a = [1,2,3,4,5]

>>> a[0:2]

[1,2]

앞의 예를 문자열에서 슬라이싱했던 것과 비교해 보자

>>> a = "12345"

>>> a[0:2]

'12'

 

몇 가지 예를 더 들어보자.

>>> a = [1,2,3,4,5]

>>> b = a[:2] 

>>> c = a[2:]

>>> b

[1,2]

>>> c 

[3,4,5]

 

[중첩된 리스트에서 슬라이싱하기]

리스트가 포함된 중첩 리스트 역시 슬라이싱 방법은 똑같이 적용된다.

>>> a = [1,2,3, ['a','b','c'], 4,5]

>>> a[2:5]

[3, ['a','b','c'] 4]

>>> a[3][:2]

['a','b']

 

리스트 연산하기

리스트 역시 + 기호를 사용해서 더할 수 있고 * 기호를 사용해서 반복할 수 있다.

 

리스트 더하기(+)

>>> a[1,2,3,]

>>> b[4,5,6]

>>> a+b

[1,2,3,4,5,6]

 

리스트 반복하기(*)

>>> a = [1,2,3]

>>> a*3

[1,2,3,1,2,3,1,2,3]

 

리스트 길이구하기

리스트 길이를 구하기 위해서는 다음처럼 len 함수를 사용해야 한다.

>>> a [1,2,3]

>>> len(a)

3

 

[초보자가 범하기 쉬운 리스트 연산 오류]

>>> a = [1,2,3]

>>> a[2] + "hi"

a[2]의 값인 3과 문자열 hi가 더해져서 3hi가 출력될 것이라고 생각할 수 있다. 하지만 다음 결과를 보자. 형 오류가 발생했다. 오류의 원인으 무엇일까?

a[2] 에 젖아된 값은 3이라는 정수인데 "hi"는 문자열이다. 정수와 문자열은 당연히 서로 더할 수 없기 때문에 형 오류가 발생한 것이다.

 

만약 숫자와 문자열을 더해서 '3h1' 처럼 만들고 싶다면 숫자 3을 문자 '3'으로 바꾸어 주어야 한다. 다음과 같이 할 수 있다.

>>> str(a[2]) + "hi"

 

리스트의 수정과 삭제

리스트는 값을 수정하거나 삭제할 수 있다.

 

리스트에서 값 수정하기

>>> a = [1,2,3]

>>> a[2] = 4

>>> a

[1,2,4]

 

del 함수 사용해 리스트 요소 삭제하기

>>> a = [1,2,3]

>>> del a[1]

>>> a

[1,3]

 

다음처럼 슬라이싱 기법을 사용하여 리스트의 요소 여러 개를 한꺼번에 삭제할 수도 있다.

>>> a = [1,2,3,4,5,]

>>> del a[2:] !!! 2 포함

>>> a

[1,2]

 

리스트 요소를 삭제하는 방법에는 2가지가 더 있다. 그것은 리스트의 remove와 pop 함수를 사용하는 방법인데 이것에 대해서는 바로 이어지는 리스트 관련 함수에서 설명한다.

 

리스트 관련 함수들

문자열과 마찬가지로 리스트 변수 이름 뒤에 '.'을 붙여서 여러 가지 리스트 관련 함수를 사용할 수 있다.

 

리스트에 요소 추가(append)

append를 사전에 검색해 보면 "덧붙이다, 첨부하다"라는 뜻이 있다.

append(x)는 리스트의 맨 마지막에 x를 추가하는 함수이다.

>>> a [1,2,3]

>>> a,append(4)

>>> a

[1,2,3,4]

 

리스트 안에는 어떤 자료형도 추가할 수 있다.

>>> a.append([5,6])

>>> a

[1,2,3,4, [5,6]]

 

리스트 정렬(sort)

sort 함수는 리스트의 요소를 순서대로 정렬해준다.

>>> a = [1,4,3,2]

>>> a.sort()

>>> a

[1,2,3,4]

문자 역시 알파벳 순서로 정렬할 수 있다.

 

내림차순으로 출력하려면 아래와 같이 설정해주면 된다.

a.sort(reverse=true)

 

리스트 뒤집기(reverse)

reverse 함수는 리스트를 역순으로 뒤집어 준다. 이때 리스트 요소들을 순서대로 정렬한 다음 다시 역순으로 정렬하는 것이 아니라 그저 현재의 리스트를 그대로 꺼꾸로 뒤집는다.

>>> a = ['a','c','b']

>>> a.reverse()

>>> a

['b','c','a']

 

sort()와 reverse()는 print(a.sort()) 이런식으로 사용하려고 하면 출력에 안나온다.

ex)

a = [1,3,5,4,2]

a.sort(reverse=True)

print(a)

 

위치 반환(index)

index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다.

>>> a = [1,2,3]

>>> a.index(3)

2

>>> a.index(1)

0

 

리스트에 요소 삽입(insert)

insert(a,b) 는 리스트의 a 번째 위치에 b를 삽입하는 함수이다.

>>> a = [1,2,3]

>>> a.insert(0, 4)

>>> a

[4,1,2,3]

 

리스트 요소 제거(remove)

remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다.

>>> a = [1,2,3,1,2,3]

>>> a.remove(3)

>>> a

[1,2,1,2,3]

a가 3이라는 값을 2개 가지고 있을 경우 첫 번째 3만 제거되는 것을 알 수 있다.

 

리스트 요소 끄집어내기(pop)

pop()은 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.

>>> a = [1,2,3]

>>> a.pop()

3

>>> a

[1,2]

 

>>> a = [1,2,3]

>>> a.pop(1) !!! a[1] 번 째의 값을 pop 한다.

2

>>> a

[1,3]

 

리스트에 포함된 요소 x의 개수 세기(count)

count(x)는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다.

>>> a = [1,2,3,1]

>>> a.count(1)

2

 

리스트 확장(extend)

extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.

>>> a = [1,2,3]

>>> a.extend([4,5])

>>> a

[1,2,3,4,5]

>>> b = [6,7]

>>> a.extend(b)

>>> a

[1,2,3,4,5,6,7]

 

a.extend([4,5])는 a += [4,5] 와 동일하다.

 

 

 

 

 

 

 

'Language > Python' 카테고리의 다른 글

점프 투 파이썬 - 딕셔너리 자료형★  (0) 2019.07.08
점프 투 파이썬 - 튜플 자료형  (0) 2019.07.08
점프 투 파이썬 - 문자열 자료형  (0) 2019.07.06
python / 문법  (0) 2019.06.27
no module named win32api 오류  (0) 2018.07.03

댓글

💲 추천 글