리스트 끼리 빼보려고 했는데 안되더라구요. 나중에 기억하기 위해서 포스팅합니다.
List 요소끼리 빼기 연산하기
에러가 나는 이유
a = [1, 2, 3]
b = [4, 5, 6]
print(a - b)
위와 같은 코드를 작성하니 다음과 같은 에러가 납니다.
TypeError: unsupported operand type(s) for -: 'list' and 'list'
그니까 리스트가 지원되지 않는 피연산자라고 합니다.
왜 머릿속에서는 당연히 연산이 될거라고 생각했을까요?
a = [1, 2, 3]
b = [4, 5, 6]
# print(a - b)
print(a + b)
c = ['a', 'b']
d = ['c', 'b']
# print(c - d)
print(c + d)
# 출력
[1, 2, 3, 4, 5, 6]
['a', 'b', 'c', 'b']
왜냐하면 더하기 연산은 되기 때문입니다..
보면 str 타입도 안됩니다.
더하기와 빼기는 항상 같이 생각해서 빼기도 될거라고 무의식 중에 생각을 했나봐요.
그럼 어떻게 해결을 하면 될까요? 바로 zip() 을 사용하면 해결할 수 있습니다.
해결
a = [1, 2, 3]
b = [4, 5, 6]
print([ai - bi for ai, bi in zip(a, b)])
# 출력
[-3, -3, -3]
zip 을 이용해서 반복문을 돌아서 하나씩 빼줍니다.
반복문을 펼쳐보면 다음과 같아요.
for ai, bi in zip(a, b):
print(ai, bi, ai - bi)
# 출력
1 4 -3
2 5 -3
3 6 -3
a와 b를 하나의 패키지처럼 묶는 것입니다. 그래서 하나씩 요소를 들고오는거에요.
그리고 빼기 산술 연산을 적용해줍니다.
python 리스트 빼기 연산
python 리스트 요소끼리 산술 빼기 연산 zip
728x90
'🧑💻 𝗣𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗶𝗻𝗴 > Python' 카테고리의 다른 글
Python deque의 rotate(), popleft() 기능 (0) | 2022.06.16 |
---|---|
Python 리스트 요소끼리 같은지 비교하기 (0) | 2022.06.14 |
Python 알고리즘 테스터 코드 만들기 (0) | 2022.01.28 |
Python 기본 문법 정리 (2) | 2022.01.27 |
Python 리스트 요소 한줄에 한번에 출력하기 (3) | 2022.01.16 |