Python
(파이썬 다시 보기)파이썬, python: 2. 자료형_리스트, 튜플, 딕셔너리, 집합
하방주인장
2023. 5. 2. 12:00
목차
1. 리스트
1-1. 리스트 슬라이싱: 더블콜론(::)
languages = ['Python', 'Java', 'JavaScript', 'C++', 'Swift']
languages[::2] #두 개의 간격으로 슬라이싱
>>> ['Python', 'JavaScript', 'Swift']
languages[1::2] # 인덱스 1 부터 2 간격으로 슬라이싱
>>> ['Java', 'C++']
1-2. 리스트 함수
- 리스트 추가 및 제거
languages = ['Python', 'Java', 'JavaScript', 'C++', 'Swift']
languages.append('go')
languages
>>> ['Python', 'Java', 'JavaScript', 'C++', 'Swift', 'go']
languages.remove('C++')
languages
>>> ['Python', 'Java', 'JavaScript', 'Swift']
languages.insert(2, 'R')
>>> ['Python', 'Java', 'R', 'JavaScript', 'Swift', 'go']
languages.pop() # 맨 마지막 요소를 리턴하고 그 요소는 삭제
>>> 'go'
languages.extend(['C++', 'go']) # my_list.extend(['abc']) = my_list = my_list + ['abc']
>>> ['Python', 'Java', 'R', 'JavaScript', 'Swift', 'C++', 'go']
- 역순으로 출력하기
languages = ['Python', 'Java', 'JavaScript', 'C++', 'Swift']
languages.reverse()
languages
>>> ['Swift', 'C++', 'JavaScript', 'Java', 'Python']
languages[::-1] # 뒤에서 부터 하나씩 출력
>>> ['Swift', 'C++', 'JavaScript', 'Java', 'Python']
languages.sort(reverse=True) # 정렬한 뒤 역순
>>> ['Swift', 'Python', 'JavaScript', 'Java', 'C++']
1-3. 리스트 컴프리헨션
# 0~9의 숫자 중 짝수 값에 대한 리스트 생성
even_num = [i for i in range(10) if i % 2 == 0]
print(even_num)
>>> [0, 2, 4, 6, 8]
# 0~9의 숫자 중 홀수 값에 대한 리스트 생성
odd_num = [i for i in range(10) if i % 2 == 1]
print(odd_num)
>>> [1, 3, 5, 7, 9]
1-4. 두 개의 리스트를 묶기
zip은 두 개의 리스트를 서로 묶어줄 때 사용한다.
name = ['merona', 'gugucon']
price = [500, 1000]
list(zip(name, price))
>>> [('merona', 500), ('gugucon', 1000)]
2. 튜플
튜플(tuple)은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며 리스트와 다른 점은 다음과 같다.
- 리스트는 [ ]으로 둘러싸지만 튜플은 ( )으로 둘러싼다.
- 리스트는 요소 값의 생성, 삭제, 수정이 가능하지만 튜플은 요소 값을 바꿀 수 없다.
3. 딕셔너리
3-1. 딕셔너리 추가, 수정, 삭제
product = {
'name': 'Macbook Pro',
'brand': 'Apple',
'price': 2000000,
'specs': {
'cpu': 'M1 Pro',
'memory': '16GB',
'storage': '512GB'
}
}
# 데이터 추가
product['rating'] = 4.5
>>> {'name': 'Macbook Pro',
'brand': 'Apple',
'price': 2000000,
'specs': {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'},
'rating': 4.5}
# 데이터 수정
product['price'] = 2500000
product
>>> {'name': 'Macbook Pro',
'brand': 'Apple',
'price': 2500000,
'specs': {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'},
'rating': 4.5}
product.update({'price':2000000, 'colour':'silver'})
product
>>> {'name': 'Macbook Pro',
'brand': 'Apple',
'price': 2000000,
'specs': {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'},
'rating': 4.5,
'colour': 'silver'}
# 데이터 삭제
del product['brand'] # brand 삭제
product
>>> {'name': 'Macbook Pro',
'price': 2000000,
'specs': {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'},
'rating': 4.5}
product.pop('rating') # rating을 삭제 후 rating의 value 값 반환
product
>>> {'name': 'Macbook Pro',
'price': 2000000,
'specs': {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'},
'colour': 'silver'}
product.clear() # 전체 삭제
product
>>> {}
3-2. 딕셔너리 함수
product.keys()
>>> dict_keys(['name', 'price', 'specs', 'colour'])
product.values()
>>> dict_values(['Macbook Pro', 2000000, {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'}, 'silver'])
product.items() # Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.
>>> dict_items([('name', 'Macbook Pro'), ('price', 2500000), ('specs', {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'}), ('rating', 4.5)])
product.get('name')
>>> 'Macbook Pro'
product.setdefault('brand', 'Apple') # key로 'brand'를 추가하고 value Apple을 설정함, setdefault는 현재 value 값을 리턴
>>> 'Apple'
product
>>> {'name': 'Macbook Pro',
'price': 2000000,
'specs': {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'},
'colour': 'silver',
'brand': 'Apple'}
product.setdefault('brand', 'Samsung') # 이미 key가 있는 경우 setdefault 현재 value 값을 리턴
>>> 'Apple'
product
>>> {'name': 'Macbook Pro',
'price': 2000000,
'specs': {'cpu': 'M1 Pro', 'memory': '16GB', 'storage': '512GB'},
'colour': 'silver',
'brand': 'Apple'}
3-3. 딕셔너리 원소 개수
- 각 데이터가 몇 번씩 있는지 횟수를 세야하는 경우: 집합으로 만들어 중복을 없앤 후 count를 센다.
data = ["BTC", "BTC", "XRP", "ETH", "ETH", "ETH"]
for k in set(data):
count = data.count(k)
print(k, count)
3-4. zip과 딕셔너리 컴프리헨션
두 개의 서로 다른 리스트에서 하나를 key로 하고 다른 하나를 value로 해서 딕셔너리로 표현하기
name = ['merona', 'gugucon']
price = [500, 1000]
dict(zip(name, price))
>>> {'merona': 500, 'gugucon': 1000}
{k:v*2 for k, v in zip(name, price)} # 아이스크림 가격이 2배 오른 딕셔너리 생성
>>> {'merona': 1000, 'gugucon': 2000}
{k:v for k, v in zip(name, price) if v < 1000} # 아이스크림 가격이 1000원 미만인 딕셔너리 생성
>>> {'merona': 500}
4. 집합
4-1. 집합의 생성, 추가, 수정, 제거
# 생성
fruits = set(['apple', 'banana', 'cherry'])
fruits
>>> {'apple', 'banana', 'cherry'}
# 추가
fruits.add('orange')
fruits
>>> {'apple', 'banana', 'cherry', 'orange'}
# 수정
fruits.update(['orange', 'graph'])
fruits
>>> {'apple', 'banana', 'cherry', 'graph', 'orange'}
# 삭제
fruits.remove('graph')
fruits
>>> {'apple', 'banana', 'cherry', 'orange'}
4-2. 교집합, 합집합, 차집합
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
# 교집합
set1 & set2
set1.intersection(set2)
>>> {3, 4, 5}
# 합집합
set1 | set2
set1.union(set2)
>>> {1, 2, 3, 4, 5, 6, 7}
# 차집합
set1 - set2
set1.difference(set2)
>>> {1, 2}