한판으로 정리하기 |
자료형 | 특징 | 변수 만들기 형식 | 예시 |
리스트 (list) | [ ] 를 사용 데이터 변경 O 데이터 중복 O 순서 O |
변수명 = [ 요소1, 요수2, 요소3, ...] 변수명 = list(요소1, 요소2, 요소3, ...) |
a = [ ] #비어있는 리스트 b = [1, 2, 3] c = [1, 2, 3,[1, 2]] #리스트 속 리스트 d = list(1, 2, 3) |
튜플 (tuple) | ( )를 사용 데이터 변경 X 데이터 중복 O 순서 O |
변수명 = (요소1, 요소2, 요소3, ...) 변수명 = tuple(요소1, 요소2, 요소3, ...) |
a = ( ) #비어있는 튜플 b = (1,) #요소가 하나인 경우 콤마로 끝나야함 c = (1, 2, 3) d = (1, 2, 3 (1, 2, 3)) # 튜플 속 튜플 e = 1, 2, 3 #괄호 생략 가능 f = tuple (1, 2, 3) |
딕셔너리 (dict) | { }에 key:value 를 삽입 데이터 변경 : (key X, value O) 순서 : 버전에 따라 상이함 |
변수명 = {key1:value2, key2:value2, ...} 변수명 = dict(key1=value1, key2=value2, ...) |
a = { } #비어있는 딕셔너리 b = {"a" : 1, "b" :2. "c" :3} #키가 문자인 경우 c = {1: "a", 2: "b", 3" : "c"} #키가 숫자인 경우 d = dict(a=1, b=2, c=3) |
집합 (set) | { }를 사용 데이터 변경 : 추가/삭제만 가능 데이터 중복 X 순서 X |
변수명 = {요소1, 요소2, 요소3, ...} 변수명 = set([요소1, 요소2, 요소3, ...]) |
a= set( ) #비어있는 집합 b = {1, 2, 3} c= set([1, 2, 3]) #리스트로 집합 만들기 d =set((1, 2, 3)) #튜플로 집합 만들기 e = set({"a" : 1. "b" :2, "c":3}) #딕셔너리로 집합 만들기 |
[리스트]
리스트 = [값1, 값2, ...]
리스트 [ ]
my_list = ["사과", "바나나","딸기"] #큰따옴표(""), 작은따옴표('') 둘다 가능, 값들은 콤마(,)로 구분
my_list = ["사과", "바나나","딸기", "딸기", "딸기"] #중복 허용
your_list = ["사과", 1, 3.14, 0, False, "아무거나"] #숫자, 문자 상관없이 뭐든지 다 넣어도 됨
empty_list = [ ] #빈 리스트
my_list = ["사과", "바나나","딸기"]
1) 인덱스에 해당하는 값? (리스트는 순서가 보장 되기 때문에 [ ] 안에 넣은 순번으로 값을 가져오게 됨)
#[0] 0번째에 해당하는 값을 가져와
> 사과
2) 슬라이싱? - 어디부터 어디까지 가져와
#[0:2] 0번째부터 1번째까지 해당하는 값을 가져와 *(마지막 숫자-1) 까지 인 것! 주의
> ['사과', '바나나']
3) 리스트에 포함되어있는지?
# "값" in my_list - T/F 불리안 값으로 결과가 나옴
> True
4) 리스트 속 값이 총 몇개?
# len( ) - 리스트 안 값이 사과,바나나, 딸기 로 3개임
> 3
5) 리스트 값을 수정하려면?
#my_list[번째숫자] = "수정값"
# [0] 0번째 '사과'를 '풋사과'로 수정하고 싶음
> [ '풋사과', '바나나', '딸기' ]
6) 리스트 값을 추가하려면?
# my_list.append("추가값")
#오렌지를 추가하고 싶음
> [ '사과', '바나나', '딸기','오렌지' ]
7) 리스트 값을 삭제하려면?
# my_list.remove("사과")
#사과를 삭제하고 싶음
> [ '바나나', '딸기' ]
8) 여러 리스트 값을 합치려면?
# my_list.extend(another_list)
# 리스트 확장 : 리스트를 합치고 싶다!
> [ '사과' '바나나', '딸기', '참외', '수박' ]
9) 값 순서대로 정렬하려면?
# my_list.sort( )
# 알파벳 순서대로 정렬해줘
> [ 'apple', 'banana',' pineapple' ]
10) 순서 뒤집기
# my_list.reverse( )
# 알파벳 순서대로 정렬해줘
> [ "딸기", "바나나", "사과" ]
11) 리스트 안에 그 값이 몇개인지?
# print(my_list.count("사과")
# 리스트 안에 사과가 몇개야?
> 2
리스트 메소드 | 의미 | 예시 |
len( ) | 리스트 안에 값이 몇개 |
print(len(my_list))
|
append( ) | 값 하나를 추가 (가장 마지막에) |
my_list.append("오렌지")
|
remove( ) | 값을 삭제 |
my_list.remove("사과")
|
extend( ) | 값을 확장 (두개의 리스트 합치기) |
my_list.extend(another_list)
|
insert( ) | 원하는 위치에 값 추가 |
my_list.insert(1,"파인애플")
|
sort( ) | 순서대로 정렬 |
my_list.sort()
|
reverse( ) | 순서 뒤집기 |
my_list.reverse()
|
copy( ) | 리스트 복사 |
your_list = my_list.copy()
your_list = my_list[:]
|
count( ) | 어떤 값이 몇개 있는지 | print(my_list.count("사과")) |
(튜플)
튜플 = (값1, 값2, ...)
튜플 ( )
튜플은 데이터 추가, 삭제, 수정 불가 - append, remove 와 같은 메소드 사용 불가
튜플은 읽기 전용 리스트라고 이해하면 됨
my_tuple = ("사과", "바나나","딸기") #큰따옴표(""), 작은따옴표('') 둘다 가능, 값들은 콤마(,)로 구분
my_tuple = ("사과", "바나나","딸기", "딸기", "딸기") #중복 허용
my_tuple = ("사과", 1, 3.14, 0, False, "아무거나") #숫자, 문자 상관없이 뭐든지 다 넣어도 됨
empty_tuple = [ ] #빈 튜플
my_tuple = ("사과", "바나나","딸기") #패킹
(fruit1, fruit2, fruit3 ) = my_tuple #언패킹
fruit1 = "사과"
fruit2 = "바나나"
fruit3 = "딸기"
* asterisk
numbers = (1,2,3,4,5,6,7,8,9,10)
(one, two, *others) = numbers #이 때 others 는 튜플이 아닌 리스트의 형태
[3,4,5,6,7,8,9,10]
numbers = (1,2,3,4,5,6,7,8,9,10)
(*others, nine, ten) = numbers #가장 앞부분에 써도 됨
[1,2,3,4,5,6,7,8]
numbers = (1,2,3,4,5,6,7,8,9,10)
(one, *others, ten) = numbers #중간에 써도 됨
[2,3,4,5,6,7,8,9]
my_tuple = ("사과", "바나나","딸기")
1) 인덱스에 해당하는 값? (튜플는 순서가 보장 되기 때문에 [ ] 안에 넣은 순번으로 값을 가져오게 됨)
#[0] 0번째에 해당하는 값을 가져와
> 사과
2) 슬라이싱? - 어디부터 어디까지 가져와
#[0:2] 0번째부터 1번째까지 해당하는 값을 가져와 *(마지막 숫자-1) 까지 인 것! 주의
> ['사과', '바나나']
3) 튜플에 포함되어있는지?
# "값" in my_tuple - T/F 불리안 값으로 결과가 나옴
> True
4) 리스트 속 값이 총 몇개?
# len( ) - 리스트 안 값이 사과,바나나, 딸기 로 3개임
> 3
{집합}
집합 = {값1, 값2, ...}
집합 { }
집합(set)는 중복을 허용하지 않는다.
집합은 순서가 없다
교집합
print(A,intersection(B))
print(A&B)
합집합
print(A,union(B))
print(A+B)
차집합
print(A,difference(B))
print(A-B)
1) 집합 값 추가
# my_set.add("추가값") #순서는 보장안됨
> {'가지', '오이','상추','깻잎'}
2) 집합 값 제거
# my_set.remove("제거값") #순서는 보장안됨
> {'오이','상추'}
3) 값 모두 제거
# my_set.clear() #값을 전체 제거
> set( ) #비어있는 집합
3) 집합 삭제
# del my_set #집합 자체를 완전 삭제 #이후에는 my_set 을 사용할 수 없음
> NameError: name 'my_set' is not defined # del my_set #값을 완전 삭제
집합 메소드 | 의미 |
copy( ) | 세트 복사 |
discard( ) | 값 삭제(해당 값이 없어도 에러 발생하지 않음 - remove와 차이점) |
isdisjoint( ) | 두 세트에 겹치는 값이 없는지 여부 |
issubset( ) | 다른 세트의 부분집합인지 여부 |
issuperset( ) | 다른 세트의 상위집합인지 여부 |
update( ) | 다른 세트의 값들을 더함 |
딕셔너리
딕셔너리는 말그대로 사전으로 key, value 값을 가진다 #key 와 value가 항상 쌍을 이룸
Python = key
[명사][그리스 신화] 피톤~~어쩌구저쩌구 = value
딕셔너리 {key:value} #key:value 들을 콤마(,)로 구분
딕셔너리는 숫자, 문자, 불리안, 리스트, 튜플 등도 얼마든지 value로 사용될 수 있음
key는 중복이 허용되지 않으며, value는 중복이 허용 됨
key는 데이터 수정이 불가하며, value는 데이터 수정이 가능
딕셔너리 = {key1:value1, key2:value2,...]
print(주제['key'])
> value 값 출력됨
person
이름 : 김파이
나이 : 10
취미 : 파이썬 공부
국적 : 대한민국
person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국' }
> 김파이
1) key 값이 없을 때 어떻게 뜨게 하고싶어? (에러 or None)
> keyError : '학교' #'학교'라는 key는 없기 때문에 keyError가 뜬다
>None #'학교'라는 key가 없어도 에러는 발생하지 않고 None으로 출력된다 print(주제.get('없는 키값'))
2) 새로운 데이터를 추가하고 싶다면
# 주제['추가키값'] = '추가벨류값'
> {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국', '최종학력' : '유치원' }
3) 특정 key의 value 값을 바꾸려면?
# 주제['키값'] = '변경벨류값' #특정 key 의 value 값도 추가할 때와 똑같이 변경값을 넣어주면 된다 #key 값은 수정이 안된다
> {'이름' : '김파이', '나이' : 10, '취미' : 'java 공부' , '국적' : '대한민국'} #파이썬 마스터 하고 취미로 java공부하는 중
4) 여러 key의 여러 value 값을 바꾸려면?
# 주제.update({'key1: value1, key2 :value2...}) #update 괄호 안에 { key: value}
> {'이름' : '김파이', '나이' : 11, '취미' : '개발자와 인터뷰하기' , '국적' : '대한민국' }
5) 특정 key, value 데이터를 삭제하려면?
# 주제.pop('삭제원하는key')
> {'이름' : '김파이', '나이' : 10, '국적' : '대한민국'}
6) 모든 데이터를 삭제하려면?
# 주제.clear( )
> { }
7) 어떤 value 들이 있는지?
# print(주제.values())
> {'김파이', 10,'파이썬 공부','대한민국']
8) 어떤 key 들이 있는지?
# print(주제.keys())
> {'이름', '나이', '취미', '국적']
9) 어떤 key:value 들이 있는지?
# print(주제.items())
> dict_items([('이름', '김파이'), ('나이', 10), ('취미', '파이썬 공부'), ('국적', '대한민국')])
딕셔너리 메소드 | 의미 |
fromkeys( ) | 제공된 keys 를 통해 새로운 딕셔너리 생성 및 반환 |
setdefault( ) | key에 해당하는 value 반환 key가 없다면 새로 만들고 default value 설정 및 반환 |
리스트 | 튜플 | 세트 | 딕셔너리 | |
선언 | lst = [ ] | t = ( ) | s = { } | d = {key:value} |
순서 보장 | O | O | X | O (v3.7 ↑) |
접근 | lst [idx] | t [idx] | X | d[key] d.get(key) |
수정 | O | X | X | O |
추가 | append( ) insert( ) extend( ) |
X | add( ) update( ) |
d[key] = value update( ) |
삭제 | remove( ) pop( ) clear( ) |
X | remove( ) discard( ) pop( ) clear( ) |
pop( ) popitem( ) clear( ) |
- 여러 값들을 순서대로 관리하고 싶다면? 리스트
- 값이 바뀔 일이 없거나 바뀌면 안된다면? 튜플
- 특정 값의 존재 여부가 중요하다면? 중복이 안된다면? 집합
- key를 통해 효율적으로 데이터를 관리하고 싶다면? 딕셔너리
댓글