본문 바로가기

환영합니다. 이 블로그 번째 방문자입니다.
Python/[re-Python] 파이썬 기본

[re-Python Basic] 리스트, 딕셔너리, 집합

1️⃣  리스트

리스트 명 = [요소1, 요소2, 요소3, ...]
odd = [1, 3, 5, 6, 7]

 

✓ 비어 있는 리스트를 생성할 때

a = list()
a = []

 

✓ 리스트 길이 구하기 👉🏻 len(리스트명)

 

✓ 리스트 키워드와 메소드

a = [1,2,3,4,5]

# del을 사용해 요소 삭제하기
del a[1] # [1,3,4,5]
del a[2:] # [1,2] 인덱스 2부터 마지막까지 전부 삭제
del a # 리스트 전체 삭제

# append : 리스트에 맨 마지막에 요소 추가
a.append(9) # [1,2,3,4,5,9]
a.append([2,3]) # [1,2,3,4,5,[2,3]]

# sort : 리스트를 순서대로 정렬
b = [5,3,6,1]
b.sort() # b = [1,3,5,6]

c = ['a','e','b']
c.sort() # c = ['a','b','e']

# reverse : 리스트 뒤집기, 그저 현재의 리스트를 거꾸로 뒤집는 것
b.reverse() # b = [1,6,3,5]

# index(x) : 리스트에 x값이 있으면 x의 인덱스 값을 반환, 존재하지 않으면 오류 반환
a = [1,2,3]
a.index(3) # 2

# insert(a,b) : a번째 위치에 b를 삽입
a = [1,2,3]
a.insert(0,4) # [4,1,2,3]

# remove(x) : 인덱스가 앞선 x의 값을 삭제
a = [1,2,3,1,2,3]
a.remove(3) # [1,2,1,2,3]

# pop() : 리스트의 맨 마지막 요소를 반환하고 그 요소는 삭제
a = [1,2,3]
a.pop() # 3 반환, a = [1,2]

# pop(x) : 리스트의 x번째 요소를 반환하고 그 요소는 삭제
a = [1,2,3]
a.pop(1) # 2 반환, a = [1,3]

# count(x) : 리스트 안에 x가 몇 개 존재하는지 반환
a = [1,2,3,1]
a.count(1) # 2

# extend(x) : x는 리스트만 가능하며 원래의 리스트에 x리스트를 추가
a = [1,2,3]
a.extend([4,5]) # [1,2,3,4,5]

 

👇🏻 del, pop, remove의 차이점

💎  del vs pop vs remove 
del은 keyword이고 pop, remove는 method이다.
del, pop은 인덱스(index)로 삭제, remove는 값(value)으로 삭제한다.
del, remove는 삭제값을 반환하지 않지만, pop은 삭제하는 인덱스의 값을 반환한다.
del, pop, remove 모두 찾는 인덱스, 값이 없을 시에는 오류를 반환한다.

 

👇🏻 sort 함수로 내림차순 정렬하기

💎 sort 함수의 reverse 옵션(매개변수)
기본적으로 list.sort()는 list.sort(reverse=False)가 디폴트 값으로 가지고 있다.
오름차순이 아닌 내림차순 정렬을 하고 싶으면 list.sort(reverse=True)로 변경하면 된다.

 

a = [3,6,1,5,7,2,0]
a.sort() # [0,1,2,3,5,6,7]
a.sort(reverse=True) # [7,6,5,3,2,1,0]

2️⃣  딕셔너리

딕셔너리 : key와 value를 한 쌍으로 갖는, 연관 배열(Associative array)과 해시(Hash)와 대응 관계가 같은 자료형이다.

{Key1 : Value1, Key2 : Value2, ...}
dic = {'name':'pey', 'phone':'01123456789','birth:'1004'}

 

⭐️ Key에는 변하지 않는 값을 사용하고 Value에는 변하는 값, 변하지 않는 값을 모두 사용할 수 있다.

 

⭐️ Key는 고유값이므로, 만약 Key값이 중복된다면 Value값은 하나를 제외한 나머지 것들이 모두 무시된다. 동일한 Key가 존재할 때 어떤 Key에 해당하는 Value를 불러야 할지 알 수 없는 딕셔너리의 특징에서 비롯된다.

a = {1:'a', 1:'b'}
print(a) # {1: 'b'}

 

⭐️ Key에 리스트는 사용할 수 없으나 튜플은 사용할 수 있다. 리스트는 변경가능한 자료형이고 튜플은 변경불가한 자료형이기 때문이다. Value에는 상관이 없다.

 

# key리스트 만들기
a = {1:'a', 2:'b', 'name':'pey', 3:[1,2,3]}
a.keys() # dict_keys([1, 2, 'name', 3])

만약 반환값으로 list가 필요하다면 list(a.keys())를 사용하면 된다. [파이썬 3.0 이후 버전의 달라진 점]

 

# value리스트 만들기
a = {1:'a', 2:'b', 'name':'pey', 3:[1,2,3]}
a.values() # dict_values(['a', 'b', 'pey', [1, 2, 3]])

# key, value 쌍 얻기
a.items() # dict_items([(1, 'a'), (2, 'b'), ('name', 'pey'), (3, [1, 2, 3])])

# key:value 쌍 모두 지우기
a.clear() # {}

# key로 value 얻기
a.get(2) # 'b'

 

👇🏻 딕셔너리에 없는 key를 찾을 때

딕셔너리에 없는 key값을 찾을 때, 예를 들어 'noKey'이라는 key가 없는 경우, a['noKey']은 오류를 발생시키고 a.get('noKey')는 None(=False)을 반환한다. 딕셔너리 안에 찾는 key값이 없는 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하는 방법은 get(x,'디폴트 값')을 사용하면 된다.

 

# 해당 key가 딕셔너리 안에 있는지 조사하기
a = {1:'a', 2:'b', 'name':'pey', 3:[1,2,3]}
'name' in a # True
'email' in a # False

 


3️⃣  집합

집합 자료형은 set키워드를 이용해 만들 수 있다.
s1 = set{ [1, 2, 3] }
s2 = set {'Hello'} # {'e', 'H', 'l' ,'o'}

 

⭐️ 집합 자료형은 중복을 허용하지 않으며, 순서가 존재하지 않는다. (리스트, 튜플 : 순서 존재 | 딕셔너리, 집합 : 순서 존재 X)

따라서 인덱싱으로 값에 접근하려면 리스트나 튜플로 변환한 후 해야 한다.

s1 = set([1,2,3])
l1 = list(s1) # 리스트로 변환

 

⭐️⭐️ 교집합, 차집합, 합집합

s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])

# 교집합
s1 & s2 # {4,5,6}
s1.interaction(s2) # {4,5,6}

# 합집합
s1 | s2 # {1,2,3,4,5,6,7,8,9}
s1.union(s2) # {1,2,3,4,5,6,7,8,9}

# 차집합
s1 - s2 #{1,2,3}
s1.difference(s2) # {1,2,3}

 

✓ 집합 관련 함수들

# add : 값 1 개 추가하기
s1 = set([1,2,3])
s1.add(4) # {1,2,3,4}

# update : 값 여러개 추가하기
s1.update([4,5,6]) # {1,2,3,4,5,6}

# remove : 특정 값 제거하기
s1.remove(2) # {1,3,4,5,6}