리스트

정인호·2022년 10월 23일
0

파이썬 문법

목록 보기
1/1

리스트의 연산

파이썬의 리스트에 대해 공부하던 중 궁금증이 생겼다.
코드를 먼저 살펴보자.

a = [1, 2, 3]
b = [2, 4, 6]

print(a * 3)
#[1, 2, 3, 1, 2, 3, 1, 2, 3]

파이썬의 리스트에 곱하기를 하면 곱한 수 만큼 해당 리스트가 반복 된다.

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

print(a * b)
#TypeError: can't multiply sequence by non-int of type 'list'

하지만 리스트끼리 곱하기를 할경우 TypeError가 발생한다.

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

print(a * a)
#TypeError: can't multiply sequence by non-int of type 'list'

그럼 a리스트에 a리스트를 곱하면 a가 두번 반복될 것이라 생각하겠지만 이역시 TypeError가 발생한다.

어떻게 하면 곱하기를 할 수 있을까 하고 여러가지를 시도해 보았다.

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

print(str(a[0]) + str(a[1]) + str(a[2]))
#123

파이썬의 내장함수 str은 인자로 받는 정수나 실수를 문자열로 바꿔주는 함수이다. 이를 이용해 리스트를 인덱싱 해서 더해주면 문자열끼리의 덧셈이므로 6이 아닌 "123"이 출력된다.
이 str함수를 이용해, 문자열끼리는 곱셈이 되지 않을까 하고 시도 해 보았다.

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

print(str(a[0]) * str(a[1]) * str(a[2]))
#TypeError: can't multiply sequence by non-int of type 'str'

하지만 이 역시 문자열끼리는 곱셈이 안된다는 에러가 발생한다.

마지막으로 정수형으로 바꿔서 연산을 해 보았다.

a = [1, 2, 3]
b = [2, 3, 4]
c = "12"
d = "123"

print(int(c) * int(d))
print(int(a) * int(a) * int(b))
#1476
#TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'

문자열을 int형으로 변환 후 곱셈은 되지만, 리스트는 에러가 발생한다.

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

print(int(a[0]) * int(b[2]))
#4

인덱싱으로 리스트의 인자를 뽑아내서 정수형으로 형 변환 후 곱셈은 가능하다.

리스트의 수정과 삭제

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

print(a)
#[1, 5, 5]

파이썬은 직관적인 언어라 눈에 보이는 것처럼 해석이 되는 것 같다.
a의 1번째 자리에 5를 넣으면 4가 5로 바뀐다.

a = [2, 4, 5]
a[0:2] = []

print(a)
#[5]

a를 0번째부터 2번째 바로 앞자리까지 슬라이싱한 후 빈 리스트를 대입하면, a의 0번째부터 1번째까지 빈값으로 바뀐다. 그후 a를 출력하면 [5]가 나온다.

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

print(a)
#[2, 5]

del함수를 사용하면 리스트의 요소를 삭제할 수 있다.

a = [2, 4, 5]
del a[1:]

print(a)
#[2]

슬라이싱을 이용해 한번에 여러 요소 삭제도 가능하다.

profile
경제학과를 졸업후 개발에 뛰어든 햇병아리입니다.

0개의 댓글