Python Tutorial - List Tuple, Dic, Set

Python Tutorial - List, Set, Dict, Tuple

Reference

์ ํ”„ ํˆฌ ํŒŒ์ด์ฌ:๋ฐ•์‘์šฉ

https://wikidocs.net/book/1

Overview

Python ๊ฐ์ฒด์—๋Š” mutable๊ณผ immutable ๊ฐ์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Mutable: ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ๊ฐ’ ์ˆ˜์ • ๊ฐ€๋Šฅ

  • Immutable: ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ๊ฐ’ ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅ. ๊ธฐ์กด ๋ณ€์ˆ˜๊ฐ’์„ ์ˆ˜์ •ํ•  ์‹œ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ƒ์„ฑ๋จ

๊ฐ์ฒด ์ง‘ํ•ฉ์€, mutable ๋ฐ ์ˆœ์„œ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๊ฐ์ฒดํ˜•ํƒœ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

class
์„ ์–ธ
์„ค๋ช…
๊ตฌ๋ถ„

list

[ ]

mutable, ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด ์ง‘ํ•ฉ

mutable

tuple

( )

immutable, ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด ์ง‘ํ•ฉ

immutable

dict

{ }

mutable, ์ˆœ์„œ ์—†๊ณ , key์™€ value๊ฐ€ ๋งตํ•‘๋œ ๊ฐ์ฒด

mutable

set

{ : }

mutable, ์ˆœ์„œ ์—†๋Š” ๊ณ ์œ ํ•œ ๊ฐ์ฒด ์ง‘ํ•ฉ

mutable

List

  • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ˆ˜์ •๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

  • list ๋Š” [] ๋Œ€๊ด„ํ˜ธ๋กœ ์ž‘์„ฑ๋˜์–ด์ง€๋ฉฐ, ๋‚ด๋ถ€ ์›์†Œ๋Š” ,๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

Tuple

  • tuple(ํŠœํ”Œ)์€ ๋ถˆ๋ณ€ํ•œ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

  • listํ˜•๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Dictionary

  • immutableํ•œ ํ‚ค(key)์™€ mutableํ•œ ๊ฐ’(value)์œผ๋กœ ๋งตํ•‘๋˜์–ด ์žˆ๋Š” ์ˆœ์„œ๊ฐ€ ์—†๋Š” ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

  • ํ‚ค๋กœ๋Š” immutableํ•œ ๊ฐ’์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, mutableํ•œ ๊ฐ์ฒด๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ์ค‘๊ด„ํ˜ธ๋กœ ๋˜์–ด ์žˆ๊ณ  ํ‚ค์™€ ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. {"a" : 1, "b":2}

Set

  • ์ˆœ์„œ๊ฐ€ ์—†๊ณ , ์ง‘ํ•ฉ์•ˆ์—์„œ๋Š” uniqueํ•œ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ  mutable ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

  • ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ dictionary์™€ ๋น„์Šทํ•˜์ง€๋งŒ, key๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ’๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. s = {3, 5, 7}

Examples

# List
a = [1, 3, 5, 7]
b= ['c', 354, True]

# Tuplet
t = (1, "korea", 3.5, 1)


# Dict
dic_a = {1: 5, 2: 3}  
dic_b = {(1,5): 5, (3,3): 3}  # immutable tuple๋งŒ Key๋กœ ๊ฐ€๋Šฅ
dic_c = { 3.6: 5, "abc": 3}

# Set
s = {3, 5, 7}
s = {"1", 3, 5, (1,3)} # immutable tuple๋งŒ element๋กœ ๊ฐ€๋Šฅ

LIST ์‚ฌ์šฉ์˜ˆ์‹œ

  • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ˆ˜์ •๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

  • list ๋Š” [] ๋Œ€๊ด„ํ˜ธ๋กœ ์ž‘์„ฑ๋˜์–ด์ง€๋ฉฐ, ๋‚ด๋ถ€ ์›์†Œ๋Š” ,๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

Index, Slicing

  • ๋ฆฌ์ŠคํŠธ๋ณ€์ˆ˜[์‹œ์ž‘์ธ๋ฑ์Šค:์ข…๋ฃŒ์ธ๋ฑ์Šค:step]

  • ์ข…๋ฃŒ์ธ๋ฑ์Šค์˜ ์›์†Œ๋Š” ํฌํ•จ๋˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์•ž ์›์†Œ๊นŒ์ง€๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. step์€ ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค.

a = [1, 3 , 5, 7]  # a[0] ~ a[3] ์ ‘๊ทผ ๊ฐ€๋Šฅ
a[-1]   	# >> 7    -1 ์—ญ์ˆœ ์ธ๋ฑ์‹ฑ
a[1:-1] 	# >> [3,5,7]
a[:2]		# >> [1,3]
a.index(3)  # >> 1


a.append(5)  # >> a = [1, 3 , 5, 7, 5] 
a+ [ 2, 7]   # >> a=[1, 3, 5, 7, 2, 7]
list("๊ฐ€๋‚˜๋‹ค") # >> ['๊ฐ€', '๋‚˜', '๋‹ค']


Tuple ์‚ฌ์šฉ์˜ˆ์‹œ

  • List์™€ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ, ํŠœํ”Œ์€ ์š”์†Ÿ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.

  • const ์„ฑ๋Šฅ์œผ๋กœ ์‚ฌ์šฉํ• ๋•Œ ์œ ์šฉํ•จ

ta = (1, "korea", 3.5, 1)
tb= 1,2,5		# tuple๋กœ ์ธ์‹
tc = (1,)		# 1๊ฐœ element ์ด๋ฉด, ์‰ผํ‘œ๊ฐ€ ์žˆ์–ด์•ผ ํ•จ

Dictionary ์‚ฌ์šฉ์˜ˆ์‹œ

  • ๊ฐ’์€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ‚ค๊ฐ€ ์ค‘๋ณต๋˜๋ฉด ๋งˆ์ง€๋ง‰ ๊ฐ’์œผ๋กœ ๋ฎ์–ด์”Œ์›Œ์ง‘๋‹ˆ๋‹ค.

  • ์ˆœ์„œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋กœ๋Š” ์ ‘๊ทผํ• ์ˆ˜ ์—†๊ณ , ํ‚ค๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ‚ค๋กœ๋Š” immutableํ•œ ๊ฐ’์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, mutableํ•œ ๊ฐ์ฒด๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

dica={"a" : 1, "b":2}
dicb = { True: 5, "abc": 3} 

dicc = {[1,3]: 5, [3,5]: 3} # gives ERROR, used mutable list in KEY
dicc = {'a': [1, 2, 3]}  # OK, to use mutable list in VALUE

dicd={"a" : 1, "a":2}  # {'a': 2},  Key ์ค‘๋ณต์€ ๋ฎ์–ด์ง

querya= dica[0]  		# gives ERROR
querya= dica['a']		# >> querya=1

dica= {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
dica.keys()				# >> dict_keys(['name', 'phone', 'birth'])
dica.values()			# >> dict_values(['pey', '010-9999-1234', '1118'])
dica.items()			# Key์™€ Value์˜ ์Œ์„ ํŠœํ”Œ๋กœ ๋ฌถ์€ ๊ฐ’์„ dict_items ๊ฐ์ฒด๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. >> dict_items([ ...])

for k in dica.keys():
...    print(k) 		# >> name, phone, birth

Set ์‚ฌ์šฉ์˜ˆ์‹œ

  • ์ˆœ์„œ๊ฐ€ ์—†๊ณ , ์ง‘ํ•ฉ์•ˆ์—์„œ๋Š” uniqueํ•œ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

    set์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ํŠน์ง• ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ํ•„ํ„ฐ๋กœ ์ข…์ข… ์‚ฌ์šฉ๋œ๋‹ค

  • ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ dictionary์™€ ๋น„์Šทํ•˜์ง€๋งŒ, key๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ’๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • set(์ง‘ํ•ฉ) ๋‚ด๋ถ€ ์›์†Œ๋Š” ๋‹ค์–‘ํ•œ ๊ฐ’์„ ํ•จ๊ป˜ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, mutableํ•œ ๊ฐ’์€ ๊ฐ€์งˆ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠœํ”Œ์€ ์ˆœ์„œ๊ฐ€ ์žˆ๊ธฐ(ordered) ๋•Œ๋ฌธ์— ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•ด ์š”์†Ÿ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ, set ์ž๋ฃŒํ˜•์€ ์ˆœ์„œ๊ฐ€ ์—†๊ธฐ(unordered) ๋•Œ๋ฌธ์— ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•ด ์š”์†Ÿ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์—†๋‹ค.

    • ๋งŒ์•ฝ set ์ž๋ฃŒํ˜•์— ์ €์žฅ๋œ ๊ฐ’์„ ์ธ๋ฑ์‹ฑ์œผ๋กœ ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠœํ”Œ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„์— ํ•ด์•ผ ํ•œ๋‹ค.

s1 = {3, 5, 7}
s2 = set([1, 2, 3])
s3 = set("Hello") 	# >> {'e', 'H', 'l', 'o'} , ์ค‘๋ณต ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ , ์ˆœ์„œ๊ฐ€ ์—†๋‹ค


l1 = list(s1)	# >> [3, 5, 7]
l1[0] 			# >> 3

s4 = set([1, 2, 3])
s4.update([4, 5, 6])  # >> s4={1, 2, 3, 4, 5, 6}
s4.add(50)			 # >>> s4={1, 50, 3}

19. for in ๋ฐ˜๋ณต๋ฌธ, Range, enumerate

1. for in ๋ฐ˜๋ณต๋ฌธ

  • ์—ฌํƒ€ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ์ผ๋ฐ˜์ ์ธ for๋ฌธ, foreach๋ฌธ, for of๋ฌธ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ์‹์„ ํ•œ๊บผ๋ฒˆ์— ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

  • Python์—์„œ๋Š” for in๋ฌธ ํ•œ๊ฐ€์ง€ ๋ฐฉ์‹์˜ for ๋ฌธ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • REPL ์—์„œ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • for in ๋ฌธ ํ˜•์‹ ์ž…๋‹ˆ๋‹ค.

  • iterable์€ ์‚ฌ์ „์ ์˜๋ฏธ์™€ ๋˜‘๊ฐ™์ด ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

for item in iterable:
  ... ๋ฐ˜๋ณตํ•  ๊ตฌ๋ฌธ...
  • iterable ๊ฐ์ฒด๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • collections.Iterable์— ์†ํ•œ instance์ธ์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • isinstance ํ•จ์ˆ˜๋Š” ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ํด๋ž˜์Šค์˜ instance์ด๋ฉด True๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์•ž์„œ ๋‹ค๋ฃฌ ํƒ€์ž… ์ค‘ list, dictionary, set, string, tuple, bytes๊ฐ€ iterableํ•œ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

  • range๋„ iterable ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ ์•„๋ž˜์ชฝ์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

  • for๋ฌธ์„ ๋™์ž‘์‹œ์ผœ๋ด…๋‹ˆ๋‹ค.

Copy>>> for i in var_list:
...     print(i)
... 
1
3
5
7

2. range

  • ์œ„์ชฝ for๋ฌธ์˜ range ๊ฒฐ๊ณผ ๊ฐ’์ด 0, 1, 2, 3, 4 ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ ๊ฐ’์ด ์ถœ๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • range๋Š” range(์‹œ์ž‘์ˆซ์ž, ์ข…๋ฃŒ์ˆซ์ž, step)์˜ ํ˜•ํƒœ๋กœ ๋ฆฌ์ŠคํŠธ ์Šฌ๋ผ์ด์‹ฑ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • range์˜ ๊ฒฐ๊ณผ๋Š” ์‹œ์ž‘์ˆซ์ž๋ถ€ํ„ฐ ์ข…๋ฃŒ์ˆซ์ž ๋ฐ”๋กœ ์•ž ์ˆซ์ž๊นŒ์ง€ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ์‹œ์ž‘์ˆซ์ž์™€ step์€ ์ƒ๋žต๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

>>> range(5)
range(0, 5)
>>> for i in range(5):
...     print(i)
... 
0
1
2
3
4
  • range๋Š” ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค๋ฅธ ์ˆœ์„œ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

>>> range(5,10)
range(5, 10)
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> tuple(range(5,10))
(5, 6, 7, 8, 9)
  • step์„ ์‚ฌ์šฉํ•ด๋ด…๋‹ˆ๋‹ค.

Copy>>> list(range(10,20,2))
[10, 12, 14, 16, 18]
>>> list(range(10,20,3))
[10, 13, 16, 19]

3. enumerate

  • ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ์‹œ ๋ช‡ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์ธ์ง€ ํ™•์ธ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ์™€ ์ปฌ๋ ‰์…˜์˜ ์›์†Œ๋ฅผ tupleํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

>>> t = [1, 5, 7, 33, 39, 52]
>>> for p in enumerate(t):
...     print(p)
... 
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
  • tupleํ˜•ํƒœ ๋ฐ˜ํ™˜์„ ์ด์šฉํ•˜์—ฌ ์•„๋ž˜์ฒ˜๋Ÿผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> for i, v in enumerate(t):
...     print("index : {}, value: {}".format(i,v))
... 
index : 0, value: 1
index : 1, value: 5
index : 2, value: 7
index : 3, value: 33
index : 4, value: 39
index : 5, value: 52

Was this helpful?