λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Python

[Python] κΈ°μ΄ˆλ¬Έλ²• _ Sequence Type (List, Tuple, Dictionary)

λ°˜μ‘ν˜•

πŸ– List

# mutable sequences - 값을 μˆ˜μ •ν•  수 μžˆλŠ” μžλ£Œν˜•μž„μ„ μ•Œ 수 μžˆλ‹€.

* λ°˜λ³΅λ¬Έμ„ 돌릴 수 μžˆλŠ” data type 확인
from collections.abc import Sequence
my_num = 100
my_list = [1, 2, 3]
my_string = "hello"

isSeq1 = isinstance(my_num, Sequence)
print(isSeq1)                          # False

isSeq2 = isinstance(my_list, Sequence)
print(isSeq2)                          # True

isSeq3 = isinstance(my_string, Sequence)
print(isSeq3)                          # True  # λ¬Έμžν˜•λ„ sequence data

πŸ“’ isinstance()

# Object에 λŒ€ν•œ 클래슀 정보가 맞으면 Trueλ₯Ό λ°˜ν™˜

πŸ‘€ 쀑첩 list - item 을 자유둭게  slicing

* Banana κΈ€μžμ—μ„œ λ§ˆμ§€λ§‰ μ•ŒνŒŒλ²³ a μΆ”μΆœ
print(a[2][2][-1])
print(a[2][1:][1][-1])

* '사과', 'Banana', 'ν‚€μœ„' 만 μŠ¬λΌμ΄μ‹±ν•΄μ„œ μΆ”μΆœ
print(a[2][1:])

 

● python list methods documentation

https://docs.python.org/3/tutorial/datastructures.html

 

πŸ‘Œ list methods μ‹€μŠ΅ - append(), extend(), insert()

* append() : Add an item
* extend() : appending all the items

* append()
x = ["κ°€", "λ‚˜"]
x.append("λ‹€")
print(x)         # ["κ°€", "λ‚˜", "λ‹€"]

x = ["κ°€", "λ‚˜"]
texts = ["λ‹€", "라", "마"]
x.append(texts)
print(x)         # ['κ°€', 'λ‚˜', ['λ‹€', '라', '마']]

* extend()
x = ["κ°€", "λ‚˜"]
texts = ["λ‹€", "라", "마"]
x.extend(texts)
print(x)         # ['κ°€', 'λ‚˜', 'λ‹€', '라', '마']

* insert() : 인덱슀 번호λ₯Ό μ§€μ •ν•œ ν›„, μƒˆλ‘œμš΄ κ°’ μΆ”κ°€
x = ["κ°€", "λ‚˜", "라"]
x.insert(2, "λ‹€")
print(x)          # ['κ°€', 'λ‚˜', 'λ‹€', '라']

πŸ‘Œ list κ°’ λ³€κ²½ / 제거 (remove, del)

* 리슀트 κ°’ λ³€κ²½
x = ["κ°€", "λ‚˜", "C", "라"]
x[2] = "λ‹€"
print(x)          # ['κ°€', 'λ‚˜', 'λ‹€', '라']

* 리슀트 κ°’ 제거
dates = [412, 510, 531, 1010]

** remove - 412 제거
dates.remove(412)
print(dates)      # [510, 531, 1010]

** del
del dates[0]
print(dates)      # [531, 1010]

πŸ‘Œ 이쀑 / 삼쀑 list & slicing

* List
List_Name = [element1, element2, element3]
a = []
b = [1, 2, 3]
c = ['Life', 'is', 'too', 'short']
d = [1, 2, 'Life', 'is']
e = [1, 2, ['Life', 'is']]

** 이쀑 list
a = [1, 2, 3, ['a', 'b', 'c']]
a[0]                 # 1
a[-1]                # ['a', 'b', 'c']
a[3]                 # ['a', 'b', 'c']

a[-1][0]             # 'a'
a[-1][1]             # 'b'
a[-1][2]             # 'c'

** 삼쀑 list
a = [1, 2, ['a', 'b', ['Life', 'is']]]
a[2][2][0]           # 'Life'


* List Slicing
a = [1, 2, 3, 4, 5]
a[0:2]               # [1, 2]

a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]  # μ€‘μ²©λœ list
a[2:5]                     # Slicing  # [3, ['a', 'b', 'c'], 4]
a[3][:2]                   # ['a', 'b']

 

πŸ– Tuple

# immutable sequences - 값을 μˆ˜μ •ν•  수 μ—†λŠ” μžλ£Œν˜•μž„μ„ μ•Œ 수 μžˆλ‹€.

 

πŸ‘€ 쀑첩 tuple - item 을 자유둭게  slicing

* Tuple (νŠœν”Œ)
my_tuple = ("Hi", 1, 2, 3)
print(my_tuple)             # ("Hi", 1, 2, 3)
print(type(my_tuple))       # class 'tuple'

** 쀑첩 tuple
my_nested_tuple = ("Hi", [1, 2, 3], (3.11, 3.23, 21.1))
print(my_nested_tuple)        # ('Hi', [1, 2, 3], (3.11, 3.23, 21.1))
print(type(my_nested_tuple))  # class 'tuple'

** 인덱싱 & μŠ¬λΌμ΄μ‹±
a = (1, 2, ('Apple', '사과', 'Banana', 'ν‚€μœ„'), 4, 5, 6)
print(a)                      # (1, 2, ('Apple', '사과', 'Banana', 'ν‚€μœ„'), 4, 5, 6)
print(type(a))                # class 'tuple'

print(a[0:3][2][2][-1])       # a

 

πŸ“’ List - Tuple 의 차이

* List /Tuple 의 차이 (κ°’ μˆ˜μ • / μ‚­μ œ)
list : mutable object - μˆ˜μ •, μ‚­μ œ κ°€λŠ₯
tuple : immutable object μ΄λ―€λ‘œ μˆ˜μ • 및 μ‚­μ œ λΆˆκ°€λŠ₯

** κ°’ μˆ˜μ •
y = ("κ°€", "λ‚˜", "C", "라")
y[2] = "λ‹€"
print(y)

TypeError: 'tuple' object does not support item assignment


** κ°’ μ‚­μ œ
dates = (412, 510, 531, 1010)

** remove - 412 제거
dates.remove(412)
print(dates)

AttributeError: 'tuple' object has no attribute 'remove'

πŸ‘Œ tuple methods μ‹€μŠ΅ - count(), index()

* tuple λ©”μ„œλ“œ - count() / index()
https://yang-wistory1009.tistory.com/37

my_tuple = ("κ°€", "κ°€", "λ‚˜", "λ‚˜", "λ‚˜", "λ‹€", "라")
print(my_tuple.count("λ‚˜"))    # 3   # ν•΄λ‹Ήν•˜λŠ” 개수 λ°˜ν™˜
print(my_tuple.index("λ‚˜"))    # 2   # 쀑볡이 될 경우 첫 번째 인덱슀 값을 λ°˜ν™˜

 

πŸ– Dictionary

# mutable unordered collections - κ°’ λ³€κ²½ κ°€λŠ₯

* Dictionary (λ”•μ…”λ„ˆλ¦¬)
my_dic = {
    'name' : 'evan',
    'age' : 30,
    'job' : 'data analyst, developer',
    'shopping' : [1 ,2, 3]
}

my_dic
print("-" * 10)

** νƒœμ–΄λ‚œ λ„μ‹œλ₯Ό μΆ”κ°€ν•˜μ„Έμš” (key - value κ°’ μž‘μ„±)
my_dic['city'] = 'seoul'
my_dic

** κ°’ μˆ˜μ •
my_dic['shopping'] = 'κ°€λ°©'
my_dic

** κ°’ 제거
del my_dic['shopping']
my_dic       # {'name': 'evan', 'age': 30, 'job': 'data analyst, developer', 'city': 'seoul'}

● python dictionary methods documentation

→  w3schools.com/python/python_ref_dictionary.asp

#  dictionary methods

πŸ‘Œ dictionary methods μ‹€μŠ΅ - keys(), values(), items()

** dictionary method - keys()
my_dic.keys()
# dict_keys(['name', 'age', 'job', 'city'])

** dictionary method - values()
my_dic.values()
# dict_values(['evan', 30, 'data analyst, developer', 'seoul'])

** dictionary method - items()
my_dic.items()
# dict_items([('name', 'evan'), ('age', 30), ('job', 'data analyst, developer'), ('city', 'seoul')])

result = list(my_dic.items())
print(result[0][0])      # name
print(result[0][1])      # evan

for i in my_dic:
  print(i)            # name / age / job / city  # iκ°€ keyκ°’μž„μ„ μ•Œ 수 있음
  print(my_dic[i])    # evan / 30 / data analyst, developer / seoul
λ°˜μ‘ν˜•