출처: 누구나 쉽게 배우는 파이썬 프로그래밍
(책 내용중 일부 수정 발췌하였습니다. 문제시 비공개로 전환하겠습니다.)
5. 리스트 연산
더하기 표시 + 를 이용하면 숫자를 더하는 것처럼 리스트들을 합칠수 있다.
예를 들어, 숫자 1부터 4까지가 담긴 list1이라는 것과 몇몇 단어들이 포함된 list2라는 리스트가 있다고 하자.
여러분은 다음과 같이 + 표시와 print를 이용하여 더할 수 있다.
>>> list1 = [1, 2, 3, 4]
>>> list2 = ['I', 'tripped', 'over', 'and', 'hit', 'the', 'floor']
>>> print(list1 + list2)
[1, 2, 3, 4, 'I', 'tripped', 'over', 'and', 'hit', 'the', 'floor']
>>>
두 개의 리스트를 더하고 그 결과를 다른 변수에 설정할 수 있다.
>>> list1 = [1, 2, 3, 4]
>>> list2 = ['i', 'are', 'chocolate', 'and', 'I', 'want', 'more']
>>> list3 = list1 + list2
>>> print(list3)
[1, 2, 3, 4, 'i', 'are', 'chocolate', 'and', 'I', 'want', 'more']
또한 숫자만큼 리스트를 곱할 수 있다. 예를 들어 list1을 5번 곱하려면 list1 * 5라고 쓴다.
>>> list1 = [1, 2]
>>> print(list1 * 5)
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
>>>
이것을 실제로 파이썬에게 list1을 다섯 번 반복하라고 알려주는 것으로, 그 결과는 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 다.
반면, 나누기 (/)와 빼기(-)는 다음과 같이 에러를 발생시킨다.
>>> list1 / 20
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <module>
list1 / 20
TypeError: unsupported operand type(s) for /: 'list' and 'int'
>>> list1 - 20
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
list1 - 20
TypeError: unsupported operand type(s) for -: 'list' and 'int'
>>>
그런데 왜? 그럴까? +로 리스트를 결합하는 것과 *로 리스트를 반복하는 것은 이해하기 매우 쉬운 연산이다.
이러한 개념들은 실제 세계에서도 통용된다.
예를 들어 필자가 두 장의 쇼핑 목록을 여러분에게 주면서 "두 개의 목록을 합치세요." 라고말한다면 여러분은
다른 종이에 순서대로 모든 항목들을 옴겨 적을 것이다.
"이 쇼핑 목록을 세번 곱하세요."라고 말했다면 그 역시 이해가 될 것이다.
여러분은 다른 종이에 모든 쇼핑 항목들을 세 번 적을 것이다.
하지만 목록을 어떻게 나눌 수 있을까? 예를 들어, 1에서 6까지 여섯 개의 숫자가 있는 목록을
2로 나누려고 한다고 하자. 다음은 서로 다른 세 가지 방법들을 보여준다.
[1, 2, 3] [4, 5, 6]
[1] [2, 3, 4, 5, 6]
[1, 2, 3, 4] [5, 6]
목록을 중간으로 나눠야 할까?
아니면 아무데나 골라서 그것을 기준으로 나눠야 할까?
간단하게 답할 수가 없으며, 여러분이 파이썬에게 목록을 나누라고 한다면 파이썬도
어떻게 해야 할지 모를 것이다. 바로 이것이 에러를 내는 이유다.
리스트에 리스트를 더하는 것이 아니라 다른 것을 더할 때도 같은 결과가 나온다.
리스트에 다른 것을 더할 수 없다.
예를 들어, 다음 list1에 50이라는 숫자를 더하려고 할 때 생기는 현상이다.
>>> list1 + 50
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
list1 + 50
TypeError: can only concatenate list (not "int") to list
>>>
여기서는 왜 에러가 났을까? 리스트에 50을 더하는 것이 무슨 뜻일까?
이 말은 각 항목마다 50씩 더하라는 것일까? 만약에 항목이 숫자가 아니면 어떻게 해야 할까?
혹시 리스트의 시작 부분이나 마지막 부분에 숫자 50을 추가하라는 의미일까?
컴퓨터 프로그래밍에서 명령어는 여러분이 입력한 방식대로 동작한다.
멍청한 컴퓨터는 검은 것과 흰 것으로만 식별한다.
컴퓨터에게 복잡한 결정을 하도록 명력한다면 에러를 던질 것이다.
'Python' 카테고리의 다른 글
7. 파이썬 맵은 길을 찾는 데 도움을 주지 않는다. (0) | 2016.12.01 |
---|---|
6. 튜플 (0) | 2016.12.01 |
4. 리스트에서 항목 삭제하기 (0) | 2016.12.01 |
3. 리스트에 항목 추가하기 (0) | 2016.12.01 |
2. 리스트는 문자열 보다 더 강력하다. (0) | 2016.12.01 |