본문 바로가기
카테고리 없음

[파이썬] 리스트 / 튜플 / 딕셔너리 / 집합 한장으로 완전 쉽게 정리 끝!

by 오잉쿡 2023. 8. 25.
반응형

 

 

한판으로 정리하기
자료형 특징  변수 만들기 형식  예시
리스트 (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번째에 해당하는 값을 가져와

my_list= ["사과", "바나나", "딸기"]
print(my_list[0])

> 사과

 

2) 슬라이싱? - 어디부터 어디까지 가져와

#[0:2] 0번째부터 1번째까지 해당하는 값을 가져와     *(마지막 숫자-1) 까지 인 것! 주의 

my_list= ["사과", "바나나", "딸기"]
print(my_list[0:2])

> ['사과', '바나나']

 

3) 리스트에 포함되어있는지? 

# "값" in my_list  - T/F 불리안 값으로 결과가 나옴

my_list= ["사과", "바나나", "딸기"]
print("바나나" in my_list)

> True

 

4) 리스트 속 값이 총 몇개?

# len( ) - 리스트 안 값이 사과,바나나, 딸기 로 3개임 

my_list= ["사과", "바나나", "딸기"]
print(len(my_list))

> 3

 

5) 리스트 값을 수정하려면?

#my_list[번째숫자] = "수정값"

# [0] 0번째 '사과'를 '풋사과'로 수정하고 싶음

my_list= ["사과", "바나나", "딸기"]
my_list[0] = "풋사과"
print(my_list)

> [ '풋사과', '바나나', '딸기' ]

 

6) 리스트 값을 추가하려면?

# my_list.append("추가값")
#오렌지를 추가하고 싶음 

my_list= ["사과", "바나나", "딸기"]
my_list.append("오렌지")
print(my_list)

> [ '사과', '바나나', '딸기','오렌지' ]

 

7) 리스트 값을 삭제하려면?

# my_list.remove("사과")
#사과를 삭제하고 싶음 

my_list= ["사과", "바나나", "딸기"]
my_list.remove("사과")
print(my_list)

> [ '바나나', '딸기' ]

 

8) 여러 리스트 값을 합치려면? 

# my_list.extend(another_list)
# 리스트 확장 : 리스트를 합치고 싶다!

my_list= ["사과", "바나나", "딸기"]
another_list = ["참외", "수박"]
my_list.extend(another_list)
print(my_list)

> [ '사과' '바나나', '딸기', '참외', '수박' ]

 

9) 값 순서대로 정렬하려면?

# my_list.sort( )

# 알파벳 순서대로 정렬해줘 

my_list= ["apple", "pineapple", "banana"]
my_list.sort()
print(my_list)

> [ 'apple', 'banana',' pineapple' ]

 

10) 순서 뒤집기 

# my_list.reverse( )

# 알파벳 순서대로 정렬해줘 

 
my_list= ["사과", "바나나", "딸기"]
my_list.reverse()
print(my_list)

> [ "딸기", "바나나", "사과" ]

 

11) 리스트 안에 그 값이 몇개인지?

# print(my_list.count("사과")

# 리스트 안에 사과가 몇개야? 

my_list= ["사과", "바나나", "딸기", "사과"]
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번째에 해당하는 값을 가져와

my_tuple = ("사과","바나나","딸기")
print(my_tuple[0])

> 사과

 

2) 슬라이싱? - 어디부터 어디까지 가져와

#[0:2] 0번째부터 1번째까지 해당하는 값을 가져와     *(마지막 숫자-1) 까지 인 것! 주의 

my_tuple = ("사과","바나나","딸기")
print(my_tuple[0:2])

> ['사과', '바나나']

 

3) 튜플에 포함되어있는지? 

# "값" in my_tuple - T/F 불리안 값으로 결과가 나옴

my_tuple = ("사과","바나나","딸기")
print("바나나" in my_tuple)

> True

 

4) 리스트 속 값이 총 몇개?

# len( ) - 리스트 안 값이 사과,바나나, 딸기 로 3개임 

my_tuple = ("사과","바나나","딸기")
print(len(my_tuple))

> 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("추가값")  #순서는 보장안됨

 
my_set={"오이","가지","상추"}
my_set.add("깻잎")
print(my_set)

> {'가지', '오이','상추','깻잎'}

 

2) 집합 값 제거

# my_set.remove("제거값")  #순서는 보장안됨

my_set={"오이","가지","상추"}
my_set.remove("가지")
print(my_set)

> {'오이','상추'}

 

3) 값 모두 제거 

# my_set.clear() #값을 전체 제거

my_set={"오이","가지","상추"}
my_set.clear()
print(my_set)

> set( )    #비어있는 집합

 

3) 집합 삭제

# del my_set #집합 자체를 완전 삭제 #이후에는 my_set 을 사용할 수 없음 

my_set={"오이","가지","상추"}
del my_set
print(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, '취미' : '파이썬 공부' , '국적' : '대한민국' } 

person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
print(person['이름'])

> 김파이 

 

1) key 값이 없을 때 어떻게 뜨게 하고싶어? (에러 or None) 

person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
print(person['학교'])

> keyError : '학교'   #'학교'라는 key는 없기 때문에 keyError가 뜬다

 

person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
print(person.get('학교'))

>None       #'학교'라는 key가 없어도  에러는 발생하지 않고 None으로 출력된다      print(주제.get('없는 키값'))

 

 

2) 새로운 데이터를 추가하고 싶다면 

# 주제['추가키값'] = '추가벨류값'

person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
person['최종학력'] = '유치원'
print(person)

>  {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국', '최종학력' : '유치원' } 

 

3) 특정 key의 value 값을 바꾸려면? 

# 주제['키값'] = '변경벨류값'   #특정 key 의 value 값도 추가할 때와 똑같이 변경값을 넣어주면 된다 #key 값은 수정이 안된다 

 
person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
person['취미'] = 'java 공부'
print(person)

>  {'이름' : '김파이', '나이' : 10, '취미' : 'java 공부' , '국적' : '대한민국'}  #파이썬 마스터 하고 취미로 java공부하는 중 

 

4) 여러 key의 여러 value 값을 바꾸려면? 

주제.update({'key1: value1, key2 :value2...})   #update 괄호 안에 { key: value}

person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
person.update({'나이' : 11, '취미' : '개발자와 인터뷰하기' })
print(person)

 {'이름' : '김파이', '나이' : 11, '취미' : '개발자와 인터뷰하기' , '국적' : '대한민국' }   

 

5) 특정 key, value 데이터를 삭제하려면?

# 주제.pop('삭제원하는key')

 
 
person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
person.pop('취미')
print(person)

 {'이름' : '김파이', '나이' : 10, '국적' : '대한민국'}  

 

6) 모든 데이터를 삭제하려면? 

# 주제.clear( )

person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
person.clear()
print(person)

 { }

 

7) 어떤 value 들이 있는지? 

# print(주제.values())

 
person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
print(person.values())

 {'김파이', 10,'파이썬 공부','대한민국']

 

8) 어떤 key 들이 있는지? 

# print(주제.keys())

 
person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
print(person.keys())

 {'이름', '나이', '취미', '국적']

 

9) 어떤 key:value 들이 있는지? 

# print(주제.items())

person = {'이름' : '김파이', '나이' : 10, '취미' : '파이썬 공부' , '국적' : '대한민국'}
print(person.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를 통해 효율적으로 데이터를 관리하고 싶다면? 딕셔너리

 

반응형

댓글