티스토리 뷰

문법정리 2탄 - 리스트, 튜플, 집합, 사전
1. 리스트(list)
1)리스트
- 서로 다른 형의 항목 또는 같은 형의 항목들이 묶여 있는 복합 자료형
'''
리스트명 = [요소1, 요소2, ...]
리스트명 = [] # 빈 리스트 생성
'''
numbers = [2,3,4,5,6,7]
2)인덱싱(indexing)
numbers = [2,3,4,5,6,7]
print(numbers[0]) # 2
print(numbers[1]) # 3
print(numbers[5]) # 7
print(numbers[-1]) # 7
print(numbers[-6]) # 2
3)슬라이싱(slicing)
numbers = [2,3,4,5,6,7]
print(numbers[0:6]) # [2,3,4,5,6,7]
print(numbers[2:]) # [4,5,6,7]
print(numbers[:3]) # [2,3,4]
4)리스트 연산
(1) 덧셈 : +
a = [1,2,3]
b = [4,5,6]
print(a+b) # [1,2,3,4,5,6]
(2) 곱하기 : *
a = [1,2,3]
print(a * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
5) 2차원 리스트
'''
리스트명 = [[요소1, 요소2], [요소1, 요소2], ...]
리스트명 = [] # 빈 리스트 생성
'''
numbers = [[1,2],[3,4],[5,6],[7,8]]
print(numbers[0][0]) # 출력 결과 : 1
print(numbers[0][1]) # 출력 결과 : 2
print(numbers[1][1]) # 출력 결과 : 4
print(numbers[3][1]) # 출력 결과 : 8
# 값 변경
numbers[2][0] = 10
print(numbers) # 출력 결과 : [[1, 2], [3, 4], [10, 6], [7, 8]]
# 값 추가
a = []
a.append([])
a[0].append(10)
a[0].append(20)
a.append([])
a[1].append(30)
a[1].append(40)
print(a) # 출력 결과 : [[10, 20], [30, 40]]
a[1].append(50)
6)그 외 리스트가 지원하는 기능
1. append(x) : 리스트 끝에 항목 더함 (a[len(a):] = [x] 와 같음)
a = [1,2,3]
b = [5,6,7]
a.append(4)
print(a) # 출력 결과 : [1, 2, 3, 4]
a.append(b)
print(a) # 출력 결과 : [1, 2, 3, 4, [5, 6, 7]]
2. extend(iterable) : 리스트 끝에 이터러블의 모든 항목을 덧붙여서 확장 (a[len(a):] = iterable 와 같음)
a = [1,2,3]
b = [5,6,7]
a.extend('a') # iterable이 아니면 에러남
print(a) # 출력 결과 : [1, 2, 3, 'a']
a.extend([4]) # a.extend(4)은 에러남
print(a) # 출력 결과 : [1, 2, 3, 'a', 4]
a.extend(b)
print(a) # 출력 결과 : [1, 2, 3, 'a', 4, 5, 6, 7]
3. insert(i,x) : i 위치에 x 값을 삽입함 (a.insert(len(a),x) 와 a.append(x) 는 동등함)
a = [1,2,3]
a.insert(0,0)
print(a) # 출력 결과 : [0, 1, 2, 3]
4. remove(x) : 리스트에서 값이 x인 항목을 삭제함. 없으면 ValueError
a = [1,2,3]
a.remove(1)
print(a) # 출력 결과 : [2, 3]
5. pop([i]) : 리스트에서 i 위치에 있는 항목을 삭제하고 그 항목을 돌려줌.
i를 지정하지 않으면 마지막 항목을 삭제하고 돌려줌 (LIFO)
a = [1,2,3]
print(a.pop(0)) # 출력 결과 : 1
print(a.pop()) # 출력 결과 : 3
print(a.pop()) # 출력 결과 : 2
6. clear() : 리스트의 모든 항목 제거
a = [1,2,3]
a.clear()
print(a) # 출력 결과 : []
7. index(x,start[,end]) : 리스트에 있는 항목 중 값이 x와 같은 첫번째 것의 0부터 시작하는 인덱스 반환.
항목 없으면 ValueError.
a = [1,2,3,5,3,6,7]
# 같은 값이 있을 경우, 앞에 있는 인덱스 출력
# (start를 지정해주지 않으면 인덱스 0부터 시작하기 때문)
print(a.index(3)) # 출력 결과 : 2
print(a.index(3,3)) # 출력 결과 : 4
# end까지 정해주면 start ~ end-1 까지의 범위를 가짐
print(a.index(7,3,7)) # 출력 결과 : 6
print(a.index(7,3,6)) # 에러
8. count(x) : 리스트에서 x가 등장하는 횟수를 돌려줌
a = [1,2,3,5,3,6,7]
print(a.count(3)) # 출력 결과 : 2
9. sort() : 리스트 항목들을 제자리에서 정렬해줌
a = [20,16,4,6,44]
a.sort()
print(a) # 출력 결과 : [4, 6, 16, 20, 44]
10. reverse() : 리스트의 요소들을 제자리에서 뒤집음
a = [20,16,4,6,44]
a.reverse()
print(a) # 출력 결과 : [44, 6, 4, 16, 20]
11. values() : value 모두 반환
d = {
5:25,
2:4,
3:9
}
print(d.values()) # 출력 결과 : dict_values([25, 4, 9])
12. copy() : 리스트의 얕은 사본을 돌려줌 (a[:] 와 같음)
a = [20,16,4,6,44]
b = a.copy()
c = a[:]
print(b) # 출력 결과 : [20,16,4,6,44]
print(c) # 출력 결과 : [20,16,4,6,44]
2. 튜플(tuple)
1)튜플
- 불변한 순서가 있는 객체의 집합, 리스트와 비슷하지만 한번 생성되면 값을 변경하거나 삭제할 수 없음
'''
변수명 = (요소1, 요소2, ...)
변수명 = () # 빈 튜플 생성
'''
t1 = ()
t2 = (1,) # 요소가 1개일 땐, 뒤에 콤마 필수
t3 = (1,2,3)
t3 = 1,2,3 # () 생략 가능
t4 = ('a','b','c')
2)인덱싱(indexing)
t1 = (1,2,'a','b')
print(t1[0]) # 1
print(t1[-1]) # b
3)슬라이싱(slicing)
t1 = (1,2,'a','b')
print(t1[0:]) # (1, 2, 'a', 'b')
print(t1[:3]) # (1, 2, 'a')
4)튜플 연산
(1) 덧셈 : +
t1 = (1,2,3)
t2 = ('a','b','c')
print(t1+t2) # (1, 2, 3, 'a', 'b', 'c')
(2) 곱하기 : *
t1 = (1,2,3)
print(t1 * 3) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
5)2차원 튜플
'''
변수명 = ((요소1, 요소2), (요소1, 요소2), ...) # 튜플안에 튜플 넣기
변수명 = ([요소1, 요소2], [요소1, 요소2], ...) # 튜플안에 리스트 넣기
변수명 = [(요소1, 요소2), (요소1, 요소2), ...] # 리스트안에 튜플 넣기
'''
t = ((10,20),(30,40),(50,60))
print(t[0][0]) # 출력 결과 : 10
print(t[1][2]) # 출력 결과 : 40
3. 집합(set)
1)집합
- 중복되는 요소가 없는 순서 없는 컬렉션, 집합,차칩합 등의 수학적인 연산도 지원
'''
변수명 = set([iterable])
변수명 = set() # 빈 집합 생성
'''
s1 = set([1,2,3])
s2 = set()
s3 = set("hello")
print(s1) # 출력 결과 : {1, 2, 3}
print(s2) # 출력 결과 : set()
print(s3) # 출력 결과 : {'l', 'h', 'e', 'o'}
# 중복과 순서가 없기 때문에 위와 같이 출력됨
4. 사전(dictionary)
1)사전
- key 와 value 가 쌍을 이룬 자료형
'''
변수명 = {key1 : value1, key1 : value1, ...}
변수명 = dict() # 빈 사전 생성
'''
my_dictionary = {
5:25,
2:4,
3:9
}
d = dict()
2)사전 요소 추가
'''
변수명[key] = value
'''
my_dictionary = {
5:25,
2:4,
3:9
}
my_dictionary[1] = '안녕'
print(my_dictionary) # {5: 25, 2: 4, 3: 9, 1: '안녕'}
3)사전 요소 삭제
'''
del 변수명[key]
'''
my_dictionary = {
5:25,
2:4,
3:9
}
del my_dictionary[3]
print(my_dictionary) # {5: 25, 2: 4}
4)사전의 키를 리스트로 만들기
'''
list(변수명)
'''
my_dictionary = {
5:25,
2:4,
3:9
}
print(list(my_dictionary)) # [5, 2, 3]
5)그 외 사전이 지원하는 기능
1. len(변수명) : 항목 수 반환
d = {
5:25,
2:4,
3:9
}
print(len(d)) # 출력 결과 : 3
2. key in d : d에 key가 있으면 True, 아니면 Flase
d = {
5:25,
2:4,
3:9
}
print(3 in d) # 출력 결과 : True
3. key not in d : d에 key가 있으면 ,False 아니면 True
d = {
5:25,
2:4,
3:9
}
print(3 in d) # 출력 결과 : Flase
4. iter(d) : 딕셔너리의 키에 대한 이터레이터 반환
d = {
5:25,
2:4,
3:9
}
print(iter(d)) # 출력 결과 : <dict_keyiterator object at 0x7f932922d2c0>
5. copy() : 딕셔너리의 얕은 복사본을 돌려줌
d = {
5:25,
2:4,
3:9
}
d1 = d.copy()
print(d) # 출력 결과 : {5: 25, 2: 4, 3: 9}
print(d1) # 출력 결과 : {5: 25, 2: 4, 3: 9}
6. clear() : 딕셔너리의 모든 항목 제거
d = {
5:25,
2:4,
3:9
}
d.clear()
print(d) # 출력 결과 : {}
7. get(key,[default]) : 딕셔너리에 key가 있으면 key의 value를 반환, 없으면 default 반환(기본값 None)
d = {
5:25,
2:4,
3:9
}
print(d.get(3)) # 출력 결과 : 9
print(d.get(9)) # 출력 결과 : None
print(d.get(1,'없어요')) # 출력 결과 : 없어요
8. setdefault(key,[default]) : 딕셔너리에 key가 있으면 key의 value를 반환,
없으면 default 반환(기본값 None)하고 key-value 추가해 줌
d = {
5:25,
2:4,
3:9
}
print(d.setdefault(3)) # 출력 결과 : 9
print(d.setdefault(9)) # 출력 결과 : None
print(d.setdefault(1,'없어요')) # 출력 결과 : 없어요
print(d) # 출력 결과 : {5: 25, 2: 4, 3: 9, 9: None, 1: '없어요'}
9. items() : key,value 모두 반환
d = {
5:25,
2:4,
3:9
}
print(d.items()) # 출력 결과 : dict_items([(5, 25), (2, 4), (3, 9)])
10. keys() : key 모두 반환
d = {
5:25,
2:4,
3:9
}
print(d.keys()) # 출력 결과 : dict_keys([5, 2, 3])
11. values() : value 모두 반환
d = {
5:25,
2:4,
3:9
}
print(d.values()) # 출력 결과 : dict_values([25, 4, 9])
12. pop(key,[default]) : 딕셔너리에 key가 있으면 제거하고 그 값 반환, 없으면 default 반환(없으면 오류)
d = {
5:25,
2:4,
3:9
}
print(d.pop(3)) # 출력 결과 : 9
print(d) # 출력 결과 : {5: 25, 2: 4}
print(d.pop(4,'지우지 못함')) # 출력 결과 : 지우지 못함
print(d) # 출력 결과 : {5: 25, 2: 4}
print(d.pop(4)) # 에러
13. popitem() : 딕셔너리에서 (key,value)쌍을 제거하고 돌려줌. 제거 순서는 LIFO
d = {
5:25,
2:4,
3:9
}
print(d.popitem()) # 출력 결과 : (3, 9)
print(d) # 출력 결과 : {5: 25, 2: 4}
print(d.popitem()) # 출력 결과 : (2, 4)
print(d) # 출력 결과 : {5: 25}
print(d.popitem()) # 출력 결과 : (5, 25)
print(d) # 출력 결과 : {}
14. reversed() : 딕셔너리의 키에 대한 역순 이터레이터를 돌려줌
d = {
5:25,
2:4,
3:9
}
print(reversed(d)) # 출력 결과 : <dict_reversekeyiterator object at 0x7f7fe6a25450>
15. update([other) : other이 제공하는 키/값 쌍으로 사전을 갱신
d = {5:25, 2:4, 3:9}
d1 = {'a':1, 'b':2}
d1.update(a=10) # 키가 문자일 경우에만 사용
print(d1) # 출력 결과 : {'a': 10, 'b': 2}
d1.update(c=3) # 키가 없다면 새로 추가해 줌
print(d1) # 출력 결과 : {'a': 10, 'b': 2, 'c': 3}
d.update({5:1,3:8}) # 키가 숫자일 경우
print(d) # 출력 결과 : {5: 1, 2: 4, 3: 8}
d.update(d1) # 사전끼리 합칠 수도 있음
print(d) # 출력 결과 : {5: 1, 2: 4, 3: 8, 'a': 10, 'b': 2, 'c': 3}
16. d | otehr (d |= d1) : d 와 other의 병합된 키와 값으로 새 딕셔너리 만듬
d = {5:25, 2:4, 3:9}
d1 = {'a':1, 'b':2}
d = d | d1 # d |= d1 과 같음
print(d) # 출력 결과 : {5: 25, 2: 4, 3: 9, 'a': 1, 'b': 2}
'[코드잇] > ㄴ파이썬' 카테고리의 다른 글
[파이썬] 문법정리 4탄 - 제어문 (0) | 2021.06.06 |
---|---|
[파이썬] 문법정리 2탄 - 자료형 (0) | 2021.06.02 |
[파이썬] 문법정리 1탄 - 변수, 상수, 리터럴 (0) | 2021.05.17 |
[파이썬] 문법정리 0탄 - 알고가면 좋은 문법 (0) | 2021.05.17 |
[파이썬] 용어집 (0) | 2021.05.17 |
- x만큼간격이있는n개의숫자
- 프로그래머스코딩테스트
- level2
- 알고리즘
- 월간 코드 챌린지 시즌2
- 컴퓨터개론
- 프로그래머스
- 프로그래머스문제
- 월간 코드 챌린지 시즌1
- 파이썬문법
- 재귀함수
- Summer/Winter Coding(~2018)
- 조합
- 문법
- KAKAO
- 백준
- SWiFT
- GIT
- level1
- 유닉스커맨드
- 프로그래머스 프로그래머스문제
- 프로그래밍언어
- 코드잇
- 코딩테스트
- 정렬
- 파이썬
- 알고리즘문제
- 설치
- 이진탐색
- 피보나치
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Total
- Today
- Yesterday