1. 리스트
리스트 선언하고 요소에 접근하기
기본형태
[요소, 요소, 요소...]
list_a = [273, 32, 103, "문자열", True, False]
list_a[-1] # False
list_a[-2] # True
list_a[3][0] # 문 => 인덱스 3 인 문자열을 가져오고 거기서 0번째 인덱스
- 리스트는 한 가지 자료형만으로도 구성할 수 있고 여러 종류의 자료형으로도 구성할 수 있다.
- 대괄호 안에 음수를 넣어 역순으로 요소를 선택할 수 있다.
- 리스트 접근 연산자를 이중으로 사용할 수 있다.
- 리스트 안에 리스트를 사용할 수 있다.
- 리스트의 길이를 넘는 인덱스 접근시 IndexError 예외
리스트 연산하기 : 연결(+), 반복(*), len()
list_a = [1,2,3]
list_b = [4,5,6]
print(list_a + list_b) # [1,2,3,4,5,6]
print(list_a * 3) # [1,2,3,1,2,3,1,2,3]
print(len(list_a)) # 3
print(len(list_b)) # 3
리스트에 요소 추가하기: append, insert, extend
- 리스트명.append(요소) : 리스트 뒤에 요소 추가
- 리스트명.insert(위치,요소) : 리스트 중간에 추가, 해당 위치의 요소는 뒤로 밀림
- 리스트명.extend(리스트) : 매개변수로 리스트를 입력받아 원래 리스트 뒤에 새로운 리스트의 요소를 모두 추가
list_a = [1,2,3]
list_a.append(4) # [1,2,3,4]
list_a.insert(1,5) # [1,5,2,3,4]
list_a.extend([1,2,3]) # [1,5,2,3,4,1,2,3]
cf) 리스트 연결 연산자와 요소 추가의 차이
+와 *의 연산자의 경우 본래 변수에는 어떠한 변화도 없는 비파괴적 처리이고 append, insert, extend 의 요소 추가의 경우 본래 변수에 영향을 주는 파괴적 처리이다.
리스트 요소 제거하기 : del, pop, remove, clear
- del 리스트명[인덱스] : 특정 인덱스 요소 제거, 범위 지정 가능
- 리스트명.pop(인덱스) : 특정 인덱스 요소 제거, 매개변수 미입력시 자동으로 -1이 들어가 마지막 요소 제거
- 리스트.remove(값) : 값을 지정해서 가장 먼저 발견되는 하나만 제거
- 리스트.clear() : 리스트 내부의 요소를 모두 제거
list_a = [0,1,2,3,4,5]
del list_a[1] # [0,2,3,4,5]
list_a.pop(2) # [0,2,4,5]
del list_a[0:3] # [5]
list_b = [1,2,1,2]
list_b.remove(2) # [1,1,2]
list_b.clear() # []
리스트 정렬하기 : sort()
- sort() : 기본 정렬 기능으로 오름차순으로 정렬한다.
- sort(reverse = True) : 내림차순으로 정렬한다.
a = [1,4,3]
a.sort()
print(a) # [1,3,4]
a.sort(reverse = True)
print(a) # [4,3,1]
리스트 내부에 있는지 확인하기: in, not in
- 값 in 리스트 : 있으면 True 없으면 False
- 값 not in 리스트 : 없으면 True 있으면 False
list_a = [1,2,3]
print(1 in list_a) # True
print(5 not in list_a) # True
2. for 반복문
기본 형태
for 반복자 in 반복할 수 있는것 :
코드
arr = [273,32,103, 57, 52]
for i in arr
print(arr)
# 출력
273
32
103
57
52
# 문자열
for i in "안녕"
print(i)
# 출력
안
녕
3. 집합 자료형
집합은 기본적으로 리스트 혹은 문자열을 이용해서 만들 수 있는데, 다음과 같은 특징이 있다.
- 중복을 허용하지 않는다.
- 순서가 없다.
리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있다. 반면에 사전 자료형과 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다는 특징이 있다. 이와 더불어 집합 자료형에서는 키가 존재하지 않고, 값 데이터만을 담게 된다. 특정 원소가 존재하는지를 검사하는 연산의 시간 복잡도는 사전 자료형과 마찬가지로 O(1)이다.
초기화 방법
set() 함수를 이용하거나, 중괄호 {} 안에 각 원소를 콤마를 기준으로 구분해서 넣으면 된다.
data = set([1,1,2,3,4,4,5])
print(data) # {1,2,3,4,5}
data = {1,1,2,3,4,4,5}
print(data) # {1,2,3,4,5}
# 완전 같은 1,1은 중복이 제거되고 순서가 다른 1,2 2,1은 유지된다.
# 중복순열을 찾을 때 사용할 수 있다.
data = {(1,1),(1,1),(2,1),(1,2)}
집합 자료형의 연산
기본적인 집합 연산으로는 합집합(|), 교집합(&), 차집합(-) 연산이 있다.
a= {1,2,3,4,5}
b = {3,4,5,6,7}
print(a|b) # {1,2,3,4,5,6,7}
print(a&b) # {3,4,5}
print(a-b) # {1,2}
집합 자료형 관련 함수
- add() : 추가(O(1))
- update() : 여러 개의 값을 한 번에 추가
- remove() : 특정 값 제거 (O(1)) - 없다면 예외 발생
- discard() : 특장 값 제거 - 없어도 예외 발생하지 않음
data = {1,2,3}
data.add(4) # {1,2,3,4}
data.update({5,6}) # {1,2,3,4,5,6} # ([5,6]) 도 가능
data.remove(3) # {1,2,4,5,6}
data.remove(3) # 3이 없으므로 예외 발생
data.discard(3) # 3이 없어도 예외가 발생하지 않음
집합 인덱싱
list로 형변환을 시켜준 뒤 접근한다.
data = {1,2,3}
data = list(data)
print(data[0]) # 1
‘혼자 공부하는 파이썬’을 읽고 공부한 내용을 바탕으로 작성하였습니다.
'Python > 혼자 공부하는 파이썬' 카테고리의 다른 글
[Python] 4-3. 반복문과 while 반복문 (0) | 2022.10.24 |
---|---|
[Python] 4-2. 딕셔너리와 반복문 (0) | 2022.10.21 |
[Python] 3. 조건문 (0) | 2022.10.20 |
[Python] 2-2. 숫자, 변수와 입력, 숫자와 문자열의 다양한 기능 (0) | 2022.10.20 |
[Python] 2-1. 자료형과 문자열 (0) | 2022.10.20 |