9. 파이썬 리스트 연산

9. 파이썬 리스트 연산

이번에는 파이썬 리스트 연산에 대해 알아보려 합니다.
벌써 파이썬 공부하기 8번째 포스팅이네요
지난번에는 파이썬 리스트 자료형에 대해서 공부해봤습니다.

파이썬 리스트 연산하기

문자열과 마찬가지로 파이썬 리스트 역시 + 기호를 사용해서 더한다던가 * 기호를 사용해서 원하는 문자열을 원하는 갯수만큼 반복해서 사용할수 있습니다.

리스트 더하기(+)

Python
>>> a = [2, 3, 4]
>>> b = [5, 6, 7]
>>> a + b
[2, 3, 4, 5, 6, 7]

문자열에서와 마찬가지로 + 기호를 사용해 두 개의 리스트를 합쳤습니다.

리스트 반복(*)

Python
>>> a = [2, 3, 4]
>>> a * 4
[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4]

역시 문자열과 마찬가지로 리스트 a * 4 를 해주면 그만큼 반복해서 출력을 해줍니다.

리스트 길이(len)

Python
>>> len(a)
3

len 함수는 문자열, 리스트, 튜플, 딕셔너리 에서도 길이를 구하기 위해 자주 사용됩니다.

리스트 연산 오류

Python
>>> a[1] + "hello"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

리스트 a[1] 의 요소값은 3 입니다. 숫자와 “hello”를 합치라는 명령이기때문에 TypeError 가 발생합니다.
숫자와 문자를 합치기 위해서는 “hello”를 숫자로 바꿀수는 없기에 숫자 3을 문자형으로 바꿔주면 됩니다.

Python
>>> str(a[1]) + "hello"
'3hello'

str 함수는 정수나 실수 같은 숫자형 자료를 문자열로 바꿔주는 파이썬 내장 함수 입니다

리스트의 수정과 삭제

리스트의 요소값은 수정 또는 삭제가 가능합니다.

리스트 요소값 수정

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

리스트 a 의 두번째 요소값 3 이 5로 변경되었습니다.

리스트 요소값 삭제(del)

Python
>>> del a[2]
>>> a
[2, 5]

del 함수로 리스트의 요소값을 삭제할 수 있습니다. 위 예는 리스트 a 의 세번째 요소인 4 를 삭제했습니다.

del 객체 (객체 : 파이썬에서 사용되는 모든 자료형)

슬라이싱 기법으로 리스트 요소 삭제

Python
>>> a = [2, 3, 4, 5, 6]
>>> del a[2:]
>>> a
[2, 3]

리스트 a 의 요소중 세번째인 4부터 모두 한꺼번에 삭제를 할수 있습니다.

파이썬 리스트 관련 함수

문자열에서와 마찬가지로 리스트 변수 이름 뒤에 ‘.’ 을 붙여서 리스트 관련 함수를 사용할수 있습니다.

리스트 요소 추가(append)

Python
>>> a = [2, 3, 4]
>>> a.append(5)
>>> a
[2, 3, 4, 5]

append(x) 라고 표현하면 리스트의 마지막에 x 라는 요소를 추가하라는 명령입니다.

리스트에 리스트 요소 추가

Python
>>> a.append([6,7])
>>> a
[2, 3, 4, 5, [6, 7]]

앞에 추가한 숫자 5 뒤로 리스트 [6, 7]을 요소로 추가했습니다.

리스트 정렬(sort)

Python
>>> a = [1, 4, 6, 3]
>>> a.sort()
>>> a
[1, 3, 4, 6]

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

Python
>>> a = ['b', 'e', 'd']
>>> a.sort()
>>> a
['b', 'd', 'e']

문자열의 경우 알파벳 순서대로 정렬을 해줍니다.

리스트 뒤집기(reverse)

Python
>>> a.reverse()
>>> a
['e', 'd', 'b']

위에 정렬해서 나온 결과값 [‘b’, ‘d’, ‘e’] 을 뒤집어서 [‘e’, ‘d’, ‘b’] 가 출력되었습니다.

인덱스 반환(index)

Python
>>> a.index('e')
0

리스트 a 의 최종 값 [‘e’, ‘d’, ‘b’] 에서 ‘e’ 는 첫번째 주소인 0 에 위치하고 있습니다.

Python
>>> a[0]
'e'

a[0]을 입력했을때 나오는 출력값으로 확인이 가능합니다.

Python
>>> a.index('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'a' is not in list

리스트 a 에 존재하지 않는 ‘a’ 값을 index로 찾아보면 값이 없다고 오류가 발생하게 됩니다.

리스트에 요소 삽입(insert)

Python
>>> a.insert(1, 't')
>>> a
['e', 't', 'd', 'b']
>>> a.insert(3, 5)
>>> a
['e', 't', 'd', 5, 'b']

첫번째는 리스트 최종값 [‘e’, ‘d’, ‘b’]의 1번째 주소인 ‘d’ 자리에 ‘t’ 요소를 삽입했습니다.
두번째는 ‘t’를 삽입한 최종값 [‘e’, ‘t’, ‘d’, ‘b’]의 3번째 주소인 ‘b’자리에 숫자 5를 삽입했습니다.

리스트 요소 제거(remove)

Python
>>> a.remove(5)
>>> a
['e', 't', 'd', 'b']

remove 는 리스트 요소에서 첫번째로 나오는 요소를 삭제하는 함수입니다.
리스트 요소인 5를 제거했습니다. 두개이상의 요소가 있더라도 첫번째 요소만 삭제가 됩니다.

리스트 요소 꺼내기(pop)

Python
>>> a.pop()
'b'
>>> a
['e', 't', 'd']
>>> a.pop(2)
'd'
>>> a
['e', 't']

pop 함수는 리스트 요소중 마지막 요소를 출력해주고 그 요소를 삭제합니다. 즉 꺼낸다고 볼수 있죠.
최종 리스트였던 [‘e’, ‘t’, ‘d’, ‘b’] 에서 ‘b’ 를 출력하고 삭제해서 [‘e’, ‘t’, ‘d’] 만 남습니다.
pop()가 아니라 pop(2) 라고 입력하면 [‘e’, ‘t’, ‘d’]에서 2번째 요소인 ‘d’를 삭제합니다.

리스트 요소 y의 개수 세기(count)

Python
>>> a = [2 ,4, 5, 4, 2, 1]
>>> a.count(2)
2

리스트 a 에서 2 의 갯수를 카운트 합니다.

리스트 확장(extend)

Python
>>> a.extend([5, 6])
>>> a
[2, 4, 5, 4, 2, 1, 5, 6]
>>> b = [9, 0]
>>> a.extend(b)
>>> a
[2, 4, 5, 4, 2, 1, 5, 6, 9, 0]

extend 함수에서는 확장 개념이기때문에 리스트형 자료만 올수 있습니다.
리스트 a 의 최종값 [2 ,4, 5, 4, 2, 1] 에 리스트 [5, 6]을 더해서 [2, 4, 5, 4, 2, 1, 5, 6] 의 결과가 나오고
b 의 리스트에 [9, 0] 을 확장해서 [2, 4, 5, 4, 2, 1, 5, 6, 9, 0]의 최종값을 가지고 옵니다.

이 포스팅은 <위키독스> 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

파이썬 리스트 연산

8. 파이썬 리스트 자료형

8. 파이썬 리스트 자료형

이전에 파이썬 문자열 포매팅, 문자열 함수에 대해 공부해봤습니다

프로그래밍을 할 때 숫자와 문자열 만으로는 부족한 점이 많습니다.
파이썬에서는 그 부족한 부분을 채울 수 있는 자료형이 존재하는데 그게 바로 파이썬 리스트 자료형 과 파이썬 리스트 함수 입니다.

파이썬 리스트 만들고 사용하기

Python
number = [2, 4, 6, 8, 10]

위처럼 리스트를 만들때는 대괄호 ‘[ ]’로 감싸주고 각각의 요소들의 값은 쉼표 ‘,’로 구분해 줍니다.

다양한 리스트 예

Python
>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Language', 'is', 'the', 'key', 'to', 'unlocking', 'happiness']
>>> d = [1, 2, 3, 'Language', 'is']
>>> e = [1, 2, 3, ['Language', 'is']]

a 는 비어있는 리스트입니다. 동일한 표현은 a = list() 입니다
b 는 숫자를 요소로 가지고 있는 리스트입니다
c 는 문자열을 요소로 가지고 있는 리스트입니다.
d 는 숫자와 문자열을 함께 요소로 가지고 있는 리스트입니다.
e 는 리스트 자체를 요소로 가지고 있습니다.

리스트 인덱싱, 슬라이싱

리스트도 문자열 과 마찬가지로 인덱싱과 슬라이싱 이 가능합니다.

리스트 인덱싱

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

a[0]은 리스트 의 첫번째 요소입니다.

Python
>>> a[0] + a[2]
4

첫번째 요소 a[0] 과 세번째 요소 a[2] 의 값을 더한 결과입니다.
1+3 의 결과로 4가 출력됩니다.

Python
>>> a[-1]
3

a[-1]은 문자열과 마찬가지로 리스트의 마지막 요소를 출력하게 됩니다.

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

a[-1]은 리스트 의 마지막 요소 [‘a’, ‘b’, ‘c’]를 출력해주고, a[3] 역시 리스트 의 네번째 요소를 출력하기때문에 동일한 값이 출력이 됩니다.

Python
>>> a[-1][0]
'a'

리스트 a[-1] 요소인 [‘a’, ‘b’, ‘c’] 에서 첫번째 요소를 출력해주라는 의미라 ‘a’ 가 출력되었습니다.

Python
>>> a[-1][1]
'b'
>>> a[-1][2]
'c'

이전 예와 마찬가지로 리스트 a[-1] 요소인 [‘a’, ‘b’, ‘c’] 에서 두번째, 세번째 요소를 출력해 주었습니다.

삼중 리스트 인덱싱

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

리스트 의 다중 중첩을 자주 사용하면 혼란스럽기 때문에 자주 사용하지는 않습니다
그래도 위 내용을 살펴보면 a 리스트 안에 [‘a’, ‘b’, [‘Life’, ‘is’]] 리스트가 포함 되어 있고, 그 리스트 안에 또 [‘Life’, ‘is’] 리스트가 포함 되어 있습니다.
a[2][2][0] 는 리스트 a의 세번째 요소 인 리스트 [‘a’, ‘b’, [‘Life’, ‘is’]] 에서 다시 세번째 요소 인 리스트 [‘Life’, ‘is’]의 첫번째 요소를 출력하라는 의미입니다.

리스트 슬라이싱

슬라이싱 의 의미는 ‘나눈다’ 입니다.

Python
>>> a = [2, 4, 6, 8, 10]
>>> a[0:2]
[2, 4]
Python
>>> b = "246810"
>>> b[0:2]
'24'

위 두가지 예를 보면 문자열과 사용방법이 동일합니다

Python
>>> a = [2, 4, 6, 8, 10]
>>> b = a[:2]
>>> c = a[2:]
>>> b
[2, 4]
>>> c
[6, 8, 10]

변수 b 는 a 리스트의 첫번째 요소부터 세번째 요소를 포함하지 않고 두번째 요소까지 의 값을 가지고 있습니다.
변수 c 는 a 리스트의 세번째 요소부터 마지막까지의 값을 가지고 있습니다.

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

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

a[2:5]는 리스트 a에서 세번째부터 여섯번째를 포함하지 않는 다섯번째까지 요소의 값. 그리고 네번째 요소의 값은 리스트 [‘a’, ‘b’, ‘c’] 입니다. 그래서 출력되는 값은 3, [‘a’, ‘b’, ‘c’], 4
두번째 a[3][:2] 는 리스트 a 의 네번째 요소의 값은 리스트 [‘a’, ‘b’, ‘c’]에서 첫번째부터 세번째를 포함하지 않는 두번째까지의 요소값 이기에 [‘a’, ‘b’] 가 출력됩니다.

  • 본 포스팅은 <위키독스> 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
파이썬 리스트 자료형