파이썬/기본

[파이썬] 컬렉션 타입, 리스트1

caramel-bottle 2023. 9. 4.

컬렉션이란?

여러 개의 데이터 항목을 하나의 단위로 관리할 수 있게 해주는 데이터 구조를 의미. 여러 개의 데이터를 하나의 변수에 저장하고, 관리할 수 있게 해줌. 리스트, 튜플, 세트, 딕셔너리 등이 컬렉션 타입에 속한다.


리스트

순서가 있는 데이터 요소의 모음. 여러 값들을 하나의 변수에 저장하고 관리할 수 있음.

list

li1 = [1, 3, 5, 7, 9]
print(li1)
type(li1)

list의 생성은 대괄호를 사용한다. 

또한 list()함수를 사용하여 list를 생성할 수 있다.

이 함수는 보통 tuple이나 dictionary를 list로 변환할 때 사용한다.

li2 = list([1, 3, 5, 7, 9])
print(li2)
print(type(li2))

*리스트와 배열 ( ChatGPT )

파이썬 리스트는 배열과 다르게 크기가 동적으로 할당된다. 이에 관한 궁금증 해결을 위해 추가적으로 ChatGPT에게 물어보았다.

 


다양한 list

li3 = ['김사과', '반하나', '오렌지', '이메론']
print(li3)

li4 = [1, 50.5, '김사과', True]
print(li4)

li5 = [1, 2, '파이썬', ['김사과', '오렌지']]
print(li5)

list는 여러가지 데이터타입을 요소로 가질 수 있다. 


list 인덱싱

li1 = [1, 3, 5, 7, 9]
print(li1)
print(li1[0])
print(li1[-1])
print(li1[0] + li1[-1])
print()

li2 = ['김사과', '오렌지', '반하나', ['피자', '핫도그', '샌드위치', '국밥']]
print(li2)
print(li2[-1])
print(li2[-1][2])
print(li2[-1][-2])
print()

li3 = [1, 2, 3, ['김사과', '오렌지', '반하나', ['피자', '핫도그', '샌드위치', '국밥']]]
print(li3[2])
print(li3[-2])
print(li3[-1][-2])
print(li3[-1][-1][-1])

 

list의 각 항목은 인덱스를 가지고 있으며, 인덱스를 사용하여 접근할 수 있다.

인덱스는 0부터 시작한다.


list 슬라이싱

li1 = [10, 20, 30, 40, 50]
print(li1)
print(li1[0:3])

li2 = li1
print(li2)
li2[0] = 100
print(li1)
print(li2)

li3 = [10, 20, 30, ['김사과', '오렌지', '반하나'], 40, ['피자', '햄버거', '초콜릿']]
print(li3[2:6])
print(li3[5][:1])

list[start:end:step] 

list의 요소 범위를 정해 추출하는 방법이다. start 부터 end 전까지 (ex. [0:3] 이면 0, 1, 2 ) step만큼의 간격씩.

 

list는 일반 변수와 마찬가지로 해당 값이 위치한 메모리 주소를 가리킨다. 따라서 li2 = li1 처럼 가리키는 객체가 같다고 하면 해당 list를 변경하여도 값을 공유한다.


list 요소값 변경

li1 = [10, 20, 30]
li1[1] = 100
print(li1)

li2 = [100, 20, 30, 40, 50]
# 슬라이싱를 이용하여 리스트 데이타를 추가한 경우 리스트에 데이터만 포함
li2[1:2] = ['🙂', '😇', '😜']
print(li2)

li2 = [100, 20, 30, 40, 50]
# 인덱싱을 이용하여 리스트 데이터를 추가한 경우 리스트 안에 리스트를 포함
li2[1] = ['🙂', '😇', '😜']
print(li2)

li2 = [100, 20, 30, 40, 50]
print(li2[1:3])
li2[1:3] = [] # 빈 리스트를 저장하면 요소가 삭제돰
print(li2)

li2 = [100, 20, 30, 40, 50]
print(li2)
del li2[2]
print(li2)

list의 요소들은 수정, 추가, 삭제가 가능하다.


list 연산

li1 = [10, 20, 30]
li2 = [40, 50, 60]
print(li1 + li2) # 덧셈이 아니라 결함

print(li2 + li1)


li1 = li1 + [40, 50] # li1 += [40, 50]
print(li1)


li1 = [10, 20, 30]
li1 += [40, 50]
print(li1)


li1 = [10, 20, 30]
print(li1 * 3)


li2 = [10, 20, 30]
print(li2[0] + li2[2])
li2[1] = 'a'
# print(li2[0] + li2[1]) # TypeError: can only concatenate str (not "int") to str

list간의 연산이 가능하다.

list와 list 자체의 덧셈은 수칙연산이 아니고 결합이다.

list 인덱싱을 통해 요소끼리 연산이 가능하다.

다만 연산하고자 하는 요소의 데이터 타입이 동일해야한다.

 

 

 

 

'파이썬 > 기본' 카테고리의 다른 글

[파이썬] 컬렉션 타입, 튜플  (0) 2023.09.05
[파이썬] 컬렉션 타입, 리스트2  (0) 2023.09.04
[파이썬] 문자열  (0) 2023.09.01
[파이썬] 변수  (0) 2023.09.01
[파이썬] print()  (0) 2023.08.31

댓글