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}