-
반응형
이번 포스팅에서는 리스트 연산하는 방법을 알아봅니다.
리스트도 연산을 할 수 있습니다.
● 리스트 더하기 ( + )
리스트를 합치는 기능을 합니다.
>>> x = [1,3,5]
>>> y = [2,4,6]
## 리스트를 더합니다.
>>> x + y
[1, 3, 5, 2, 4, 6]
>>> x
[1, 3, 5]
>>> y
[2, 4, 6]
## 자기 자신에게 더합니다.
>>> x += [ 10, 11]
>>> x
[1, 3, 5, 10, 11]
## 중첩 리스트도 같은 방식으로 더하기 할 수 있습니다.
>>> x = [ [1,3] ]
>>> y = [ 2, [4, 6]]
>>> x + y
[[1, 3], 2, [4, 6]]
>>>호기심이 발동하여 빼기도 되나? 싶어서 해 보았습니다.
List 에서는 – 는 지원 하지 않는 다는 오류 메시지가 발생합니다.
이전 포스팅의 삭제 방법으로 해야 합니다.
>>> x = [1, 3, 5]
>>> y = [ 2, 4, 6]
>>> x - y
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
x - y
TypeError: unsupported operand type(s) for -: 'list' and 'list'
>>> x = [ 1, 3, 5]
>>> y = [1, 3]
>>> x - y
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
x - y
TypeError: unsupported operand type(s) for -: 'list' and 'list'
>>> x -= [4, 6]
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
x -= [4, 6]
TypeError: unsupported operand type(s) for -=: 'list' and 'list'
>>>● 리스트 반복 ( * )
곱하기 기호를 사용하여 리스트를 반복 시킬 수 있습니다.
아래와 같이 곱하기 수 만큼 리스트를 반복 시킬 수 있습니다.
>>> x = [1, 3] * 3
>>> x
[1, 3, 1, 3, 1, 3]중첩 리스트도 반복할 수 있습니다.
>>> x = [[1,3]] * 3
>>> x
[[1, 3], [1, 3], [1, 3]]
>>> x[0]
[1, 3]여기서 중요한 개념이 하나 있습니다.
위의 리스트의 첫번째 요소에 하나의 원소 값(7)을 추가하고 싶을 경우 아래와 합니다.
결과가 [[1, 3, 7], [1, 3], [1, 3]] 이렇게 되기를 예상하고 아래 명령어를 수행합니다.
그런데 각 요소에 7이 모두 추가 되는 결과를 얻었습니다.
>>> x[0].append(7)
>>> x
[[1, 3, 7], [1, 3, 7], [1, 3, 7]]
>>> x[1]
[1, 3, 7]
>>> x[1].append( 5)
>>> x
[[1, 3, 7, 5], [1, 3, 7, 5], [1, 3, 7, 5]]그럼 아예 리스트를 [[1, 3], [1, 3], [1, 3]] 로 정의하고 첫번째 요소에 7을 추가해 봅니다.
처음에 예상했던 결과가 나왔습니다.
>>> x =>>> x[0].append(7)
>>> x
[[1, 3, 7], [1, 3], [1, 3]]다른 점은 하나는 곱하기로 반복을 했고, 다른 하나는 리스트 선언시에 같은 리스트를 만들었습니다.
왜 이런 결과가 나올까요?
이전에 공부했던 id() 함수를 이용하여 주소 값을 출력해 보았습니다.
원리는 아래 그림과 같습니다.
곱하기를 할 경우 각 요소마다 같은 주소이지만 리스트를 선언할 경우는 각 요소마다 다른 주소 값으로 보여집니다.
따라서 x[0] 으로 접근을 하지만 실제 파이썬은 주소로 접근을 하므로 결과 값이 아래 예제와 같이 달라집니다.
아래 예제를 보면서 이해 해 보세요.
>>> x = [[1,3]]
>>> id(x[0])
1298173072768
>>> x *= 3
>>> x
[[1, 3], [1, 3], [1, 3]]
>>> id(x[0] )
1298173072768
>>> id(x[1])
1298173072768
>>> id(x[2])
1298173072768
>>>
>>> x[0].append(5)
>>> x
[[1, 3, 5], [1, 3, 5], [1, 3, 5]]
>>> id(x[0])
1298173072768
>>> id(x)
1298173073024
>>> id(x[1])
1298173072768
>>> x = [[1,3],[1,3],[1,3]]
>>> id(x)
1298173074368
>>> id(x[0])
1298173072448
>>> id(x[1])
1298172794112
>>> id(x[2])
1298172635648
>>> x[0].append(5)
>>> x
[[1, 3, 5], [1, 3], [1, 3]]
>>>오늘은 약간 어려운 개념이 있었습니다. 하지만 원리를 이해하면 쉬운 개념입니다.
이렇게 리스트를 연산하는 법을 공부하였습니다.
다음 포스팅은 리스트 정렬 메소드에 대한 포스팅 입니다.
반응형'IT 이야기 공간 > 프로그램 언어' 카테고리의 다른 글
파이썬 리스트 개수, 길이 구하기 (0) 2020.06.17 파이썬 리스트 정렬하기 (0) 2020.06.16 파이썬 리스트 함수 요소 수정 및 여러개 삭제하는 방법 (0) 2020.06.14 파이썬 리스트 요소 추가 및 합치기 (0) 2020.06.13 파이썬 리스트 요소 나누기 (슬라이싱) (0) 2020.06.12