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

[Python] λ³€μˆ˜

by μ½”λ”©ν•˜λŠ” λΆ•μ–΄ 2021. 2. 10.
λ°˜μ‘ν˜•

λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€ λ•Œ μžλ£Œν˜•μ„ 직접 지정해야 ν•œλ‹€.

 

>>> a = 1
>>> b = "python"
>>> c = [1, 2, 3]

λ³€μˆ˜λ₯Ό λ§Œλ“€ λ•ŒλŠ” = 기호λ₯Ό μ‚¬μš©ν•œλ‹€.

​

λ³€μˆ˜ 이름 = λ³€μˆ˜μ— μ €μž₯ν•  κ°’

​

λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€ λ•Œ μžλ£Œν˜•μ„ 직접 지정해야 ν•œλ‹€. ν•˜μ§€λ§Œ νŒŒμ΄μ¬μ€ λ³€μˆ˜μ— μ €μž₯된 값을 슀슀둜 νŒλ‹¨ν•˜μ—¬ μžλ£Œν˜•μ„ μ§€μ •ν•œλ‹€.

​

​​

​​

β–Ά λ³€μˆ˜λž€?

νŒŒμ΄μ¬μ—μ„œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λŠ” 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” 것이라고도 말할 수 μžˆλ‹€. κ°μ²΄λž€ μš°λ¦¬κ°€ μ§€κΈˆκ» 보아 온 μžλ£Œν˜•κ³Ό 같은 것을 μ˜λ―Έν•˜λŠ” 말이닀.

 

>>> a = [1, 2, 3]

λ³€μˆ˜ aλŠ” [1, 2, 3] λ¦¬μŠ€νŠΈκ°€ μ €μž₯된 λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œλ₯Ό 가리킨닀.

 

>>> a = [1, 2, 3]
>>> id(a)
4303029896

id ν•¨μˆ˜λŠ” λ³€μˆ˜κ°€ 가리킀고 μžˆλŠ” 객체의 μ£Όμ†Œ 값을 λŒλ €μ£ΌλŠ” 파이썬 λ‚΄μž₯ ν•¨μˆ˜μ΄λ‹€.

 

 

 

β–Ά 리슀트λ₯Ό 볡사할 λ•Œ (리슀트 μžλ£Œν˜•μ—μ„œ κ°€μž₯ ν˜Όλ™ν•˜κΈ° 쉬움)

>>> a = [1, 2, 3]
>>> b = a

b와 aλŠ” μ™„μ „νžˆ λ™μΌν•˜λ‹€κ³  ν•  수 μžˆλ‹€.

 

>>> id(a)
4303029896
>>> id(b)
4303029896

id(a)의 κ°’κ³Ό id(b)의 값이 λ™μΌν•˜λ‹€.

즉, aκ°€ κ°€λ¦¬ν‚€λŠ” λŒ€μƒκ³Ό bκ°€ κ°€λ¦¬ν‚€λŠ” λŒ€μƒμ΄ λ™μΌν•˜λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

>>> a is b   ← a와 bκ°€ κ°€λ¦¬ν‚€λŠ” κ°μ²΄λŠ” λ™μΌν•œκ°€?
True

λ™μΌν•œ 객체λ₯Ό 가리킀고 μžˆλŠ”μ§€μ— λŒ€ν•΄μ„œ νŒλ‹¨ν•˜λŠ” 파이썬 λͺ…λ Ήμ–΄ isλ₯Ό λ‹€μŒκ³Ό 같이 싀행해도 μ—­μ‹œ μ°Έ(True)λ₯Ό λŒλ €μ€€λ‹€.

 

>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]

a 리슀트의 두 번째 μš”μ†Œλ₯Ό κ°’ 4둜 λ°”κΎΈμ—ˆλ”λ‹ˆ a만 λ°”λ€ŒλŠ” 것이 μ•„λ‹ˆλΌ b도 λ˜‘κ°™μ΄ λ°”λ€Œμ—ˆλ‹€.

a, b λͺ¨λ‘ λ™μΌν•œ 리슀트λ₯Ό 가리킀고 있기 λ•Œλ¬Έμ΄λ‹€.

 

 

- [:] μ‚¬μš©

리슀트 전체λ₯Ό κ°€λ¦¬ν‚€λŠ” [:]λ₯Ό μ‚¬μš©ν•΄μ„œ 볡사.

>>> a = [1, 2, 3]
>>> b = a[:]   ← 리슀트 a의 처음 μš”μ†ŒλΆ€ν„° 끝 μš”μ†ŒκΉŒμ§€ μŠ¬λΌμ΄μ‹±
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]

a 리슀트 값을 바꾸더라도 b λ¦¬μŠ€νŠΈμ—λŠ” 영ν–₯을 λΌμΉ˜μ§€ μ•ŠλŠ”λ‹€.

 

 

- copy λͺ¨λ“ˆ μ‚¬μš©

>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a)

μœ„ μ˜ˆμ—μ„œ b = copy(a)λŠ” b = a[:]κ³Ό λ™μΌν•˜λ‹€.

 

>>> a
[1, 2, 3]
>>> b
[1, 2, 3]
>>> b is a
False

μ—¬κΈ°μ„œ b is aκ°€ Falseλ₯Ό λŒλ €μ£Όλ―€λ‘œ b와 aκ°€ κ°€λ¦¬ν‚€λŠ” κ°μ²΄λŠ” μ„œλ‘œ λ‹€λ₯΄λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

 

 

β–Ά λ³€μˆ˜λ₯Ό λ§Œλ“œλŠ” μ—¬λŸ¬ 가지 방법

​

- νŠœν”Œ λŒ€μž…

>>> a, b = ('python', 'life')
>>> (a, b) = 'python', 'life'

 

 

- 리슀트둜 λ³€μˆ˜ λ§Œλ“€κΈ°

>>> [a, b] = ['python', 'life']

 

 

- μ—¬λŸ¬ 개의 λ³€μˆ˜μ— 같은 값을 λŒ€μž…ν•˜κΈ°

>>> a = b = 'python'

 

 

- 두 λ³€μˆ˜μ˜ κ°’ λ°”κΎΈκΈ°

>>> a = 3
>>> b = 5
>>> a, b = b, a   ← a와 b의 값을 λ°”κΏˆ
>>> a
5
>>> b
3
λ°˜μ‘ν˜•

'Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Python] ifλ¬Έ  (0) 2021.02.11
[Python] μ—°μŠ΅λ¬Έμ œ 2  (0) 2021.02.11
[Python] 뢈 μžλ£Œν˜•  (0) 2021.02.10
[Python] 집합 μžλ£Œν˜•  (0) 2021.02.10
[Python] λ”•μ…”λ„ˆλ¦¬ μžλ£Œν˜•  (0) 2021.02.06

λŒ“κΈ€