반응형
파이썬 컨테이너(Containers) - 리스트(List)의 가변성
파이썬에서는 다른 객체들을 여러 개 담을 수 있는 자료형들도 제공합니다. 기본적으로는 리스트(list), 사전(dict), 집합(set), 튜플(tuple) 등이 제공됩니다. collections 모듈을 통해서 더 많은 종류의 컨테이너 자료형들을 사용할 수 있습니다.
기본 컨테이너 자료형들 정리
이름 | type | 예시 | 가변성 | 순서유지 | 중복허용 |
---|---|---|---|---|---|
리스트 | list | ["사과", 123, 3.14] |
가변 | O | O |
튜플 | tuple | ("사과", 123, 3.14) |
불변 | O | O |
집합 | set | {"사과", 123, 3.14} |
가변 | X | X |
사전 | dict | {"원주율":3.14, 123:"일이삼"} |
가변 | 3.6+ | 키X값O |
리스트 사용법 (List)
리스트는 파이썬에서 가장 유연하게 사용할 수 있고 많이 사용되는 컨테이너입니다.
리스트를 만드는 방법
리스트는 대괄호(square brackets [])으로 만들어지고 컴마(comma ,) 기호를 이용해서 아이템(item)을 구분합니다.
- 리스트의 가변성
- 기본적인 매소드
- 중첩리스트
- 리스트와 반목문(for) 에 대하여 알아보도록 하겠습니다.
In [1]:
my_list = [] # 비어있는 리스트
my_list = [1, 2, 3, 4, 5] # 아이템 나열
my_list = ["A string", 23, 100.232, "o"] # 다양한 자료형의 객체들을 담을 수 있어요
my_list = [x + 100 for x in range(1, 11)] # 아이템들의 조건을 기술
In [2]:
# 아이템 개수
my_list = [1,2,3,4,5,"햇살", "구름", [1]]
len(my_list)
Out[2]:
8
반응형
리스트는 가변(Mutable)
리스트는 문자열과 달리 가변(mutable) 자료형입니다.
In [3]:
# 리스트에서도 인덱싱을 사용할 수 있습니다.
my_list[3]
Out[3]:
4
In [4]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[2:]
Out[4]:
[3, 4, 5, '햇살', '구름', [1]]
In [5]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[:5]
Out[5]:
[1, 2, 3, 4, 5]
In [6]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[3:6]
Out[6]:
[4, 5, '햇살']
In [7]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[::-1]
Out[7]:
[[1], '구름', '햇살', 5, 4, 3, 2, 1]
In [8]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[::2]
Out[8]:
[1, 3, 5, '구름']
In [9]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[::-3]
Out[9]:
[[1], 5, 2]
In [10]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[0:6:2]
Out[10]:
[1, 3, 5]
In [11]:
# 슬라이싱 규칙은 문자열과 같습니다.
my_list[6:1:-2]
Out[11]:
['구름', 5, 3]
In [12]:
# 리스트는 가변(mutable) 자료형입니다. 리스트안의 원소는 바뀌어도 my_list의 주소는 동일합니다.
# 문자열 사용법과 비교해서 살펴보세요.
print(id(my_list), my_list)
my_list[2] = "아이스크림"
print(id(my_list), my_list)
2398274147584 [1, 2, 3, 4, 5, '햇살', '구름', [1]]
2398274147584 [1, 2, '아이스크림', 4, 5, '햇살', '구름', [1]]
In [13]:
# 슬라이싱으로도 대입이 가능합니다.리스트안의 원소는 바뀌어도 my_list의 주소는 동일합니다.
my_list = [1,2,3,4,5,"햇살", "구름", [1]]
print(id(my_list), my_list)
my_list[2:4] = ["원", "투", "쓰리"]
print(id(my_list), my_list)
2398274538496 [1, 2, 3, 4, 5, '햇살', '구름', [1]]
2398274538496 [1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1]]
In [14]:
# 더하기 연산자로 아이템 추가 (주의: 리스트 끼리만 연산)
print(id(my_list), my_list)
my_list + ["아이템 추가"]
2398274538496 [1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1]]
Out[14]:
[1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1], '아이템 추가']
In [15]:
# 원래 리스트에는 변화가 없음을 확인할 수 있습니다. 물론 id도 동일합니다.
print(id(my_list), my_list)
my_list
2398274538496 [1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1]]
Out[15]:
[1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1]]
In [16]:
# 리스트간의 더하기 후 대입하면 어떻게 될까요?
my_list = my_list + ["아이템 추가"]
print(id(my_list), my_list)
my_list
2398274538880 [1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1], '아이템 추가']
Out[16]:
[1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1], '아이템 추가']
In [17]:
# 리스트간에 더한 후 대입을 하면 새로운 다른 id 의 새로운 리스트가
# 생성된 것을 확인 할 수 있습니다. 아이디를 확인해 보세요.
In [18]:
# += 연산자 사용
print(id(my_list))
my_list += ["아이템을 추가하면 ID가 달라질까요?"]
print(id(my_list))
my_list
2398274538880
2398274538880
Out[18]:
[1, 2, '원', '투', '쓰리', 5, '햇살', '구름', [1], '아이템 추가', '아이템을 추가하면 ID가 달라질까요?']
In [19]:
# id가 달라지지 않는 것을 확인할 수 있습니다.
# my_list = my_list + ["아이템 추가"] 는 아이디가 달라짐.
# my_list += ["아이템을 추가하면 ID가 달라질까요?"] 는 아이디가 달라지지 않음.
In [20]:
# 리스트와 정수의 곱하기, 새롭게 대입을 하는 경우 아이디가 달라짐을 확인할 수 있습니다.
my_list = []
for i in range(1, 5):
my_list.append(i)
print(id(my_list), my_list)
my_list = my_list * 2
print(id(my_list), my_list)
2398274550464 [1, 2, 3, 4]
2398274529024 [1, 2, 3, 4, 1, 2, 3, 4]
In [21]:
# *= 연산자 사용, 아이디는 변하지 않습니다.
# = 를 사용하여 새롭게 정의한 경우에만 아이디가 변경이 되고 연산자 +=, *= 의
# 경우 리스트의 원소는 추가를 하나 아이디는 변경되지 않는다는 것을 확인할 수 있습니다.
print(id(my_list), my_list)
my_list *= 2
print(id(my_list), my_list)
2398274529024 [1, 2, 3, 4, 1, 2, 3, 4]
2398274529024 [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
이번 시간에는 리스트의 사용법과 가변성에 대해 알아보았습니다. 다음 시간에는 리스트의 매소드, 중첩리스트 그리고 반복문을 사용한 리스트 만들기에 대해서 알아보겠습니다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.
반응형
'수학과 코딩' 카테고리의 다른 글
파이썬(python) 튜플(tuple)과 시퀀스(sequense) 정리 (0) | 2022.07.27 |
---|---|
파이썬(python) 리스트의 사용 방법 총 정리(매소드, 중첩리스트, 반복문) (0) | 2022.07.26 |
파이썬(python) 문자열(string) 사용법(use)_불변성, 매소드, 포맷팅 (0) | 2022.07.25 |
파이썬(python) 문자열(string) 사용법(use)_리터럴(literal), 출력(print), 인덱싱(indexing), 슬라이싱(slicing) (0) | 2022.07.24 |
파이썬 기초 문법 변수의 사용법 (0) | 2022.07.21 |
댓글