λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
🀷🏼‍♀️ Etc.../- C, C++, Python, Android

Python νŠœν”Œμ˜ λͺ¨λ“  것

by Wonit 2019. 12. 2.

νŠœν”Œ (Tuple)

 

λ¦¬μŠ€νŠΈμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ νŠœν”Œμ€ ν•­λͺ©μ˜ μ‹œν€€μŠ€μ΄λ‹€. κ·Έλ ‡μ§€λ§Œ λ¦¬μŠ€νŠΈμ™€ κ°€μž₯ 큰 차이점이 μžˆλŠ”λ° λ°”λ‘œ λΆˆλ³€ν˜• μ‹œν€€μŠ€λΌλŠ” 점이닀. 즉, νŠœν”Œμ„ μ •μ˜ν•œ ν›„μ—λŠ” μΆ”κ°€, μ‚­μ œ, 변경이 λΆˆκ°€λŠ₯ν•˜λ‹€ κ·Έλž˜μ„œ μ‚¬λžŒλ“€μ€ νŠœν”Œμ„ μƒμˆ˜ν˜• 리슀트라고 ν•œλ‹€.

 

νŠœν”Œ μƒμ„±ν•˜κΈ° : ()

>> tuple_ex = ()

μš°λ¦¬κ°€ 리슀트λ₯Ό 생성할 λ•ŒλŠ” []λ₯Ό μ‚¬μš©ν–ˆλŠ”λ° νŠœν”Œμ€ μƒμ„±ν•˜λŠ” 방식이 ()으둜 쑰금 λ‹€λ₯΄λ‹€. νŠœν”Œμ˜ μ›μ†Œκ°€ λͺ‡ κ°œκ°€ 될 것인지에 따라 쑰금 λ‹€λ₯Έλ°

 

  • νŠœν”Œμ˜ μš”μ†Œκ°€ ν•œ 개

    >> tuple_ex = ('jang',)

    ν•˜λ‚˜μ˜ μš”μ†Œκ°€ μžˆμ„ λ•ŒλŠ” μš”μ†Œ 뒀에 (,) 컴마λ₯Ό λΆ™ν˜€μ€€λ‹€. λ§Œμ•½ μ»΄λ§ˆκ°€ μ—†λŠ” κ²½μš°λŠ” 인터프리터가 λ¬Έμžμ—΄ μ‹œν€€μŠ€λ‘œ μΈμ‹ν•˜κΈ° λ•Œλ¬Έμ— νŠœν”Œμ˜ μœ μ§€κ°€ λ˜μ§€ μ•ŠλŠ”λ‹€.

 

  • νŠœν”Œμ˜ μš”μ†Œκ°€ μ—¬λŸ¬ 개

    >> tuple_ex = ('jang', 'kim', 'song')

    νŠœν”Œμ˜ μš”μ†Œκ°€ μ—¬λŸ¬κ°œλΌλ©΄ λ§ˆμ§€λ§‰μ— (,)컴마λ₯Ό λΆ™νžˆλŠ” 과정을 μƒλž΅ν•΄λ„ μΈν„°ν”„λ¦¬ν„°λŠ” νŠœν”Œμž„μ„ μΈμ§€ν•œλ‹€.

 

μΈν„°ν”„λ¦¬ν„°λŠ” νŠœν”Œμ„ 좜λ ₯ν•  λ•Œ ()κ΄„ν˜Έκ°€ λΆ™μ§€λ§Œ νŠœν”Œμ΄ μ•„λ‹Œ 일반 μ‹œν€€μŠ€μΌ 경우 κ΄„ν˜Έλ₯Ό μƒλž΅ν•œλ‹€.

 

 

νŠœν”Œ μ–ΈνŒ¨ν‚Ή (Tuple Unpacking)

νŠœν”Œ μ–ΈνŒ¨ν‚Ήμ΄λΌλŠ” 것은 ν•œ λ²ˆμ— μ—¬λŸ¬ λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” 것을 λœ»ν•œλ‹€.

 

>> tuple = ('jang', 'hong', 'heo')
>> a, b, c = tuple
>> a
'jang'
 
λ§Œμ•½ ν• λ‹Ήν•˜λŠ” λ³€μˆ˜μ˜ κ°œμˆ˜μ™€ νŠœν”Œμ˜ μ›μ†Œ μˆ˜μ™€ λ§žμ§€ μ•ŠλŠ”λ‹€λ©΄ λ‹€μŒκ³Ό 같은 였λ₯˜λ₯Ό λ°°μΆœν•œλ‹€.

 

>>> tuple = ('jang', 'won', 'ik')
>>> a, b, c, d = tuple
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 4, got 3)

 

이λ₯Ό ν†΅ν•΄μ„œ μš°λ¦¬λŠ” 일반적인 언어와 λ‹€λ₯Έ κ°’μ˜ κ΅ν™˜μ„ ν•  수 μžˆλ‹€.

 

String firstName = "jang";
String lastName = "wonik";
String temp = firstName;
firstName = lastName;
lastName = temp;

 

κ³Ό 같이 tempλΌλŠ” λ³€μˆ˜μ— μž„μ‹œ ν• λ‹Ή 과정을 κ±°μ³€λ‹€λ©΄ νŠœν”Œ μ–ΈνŒ¨ν‚Ήμ„ ν†΅ν•΄μ„œ ν•œ μ€„λ‘œ λ°”κΏ€ 수 μžˆλ‹€.

 

>> first_name = 'jang'
>> last_name = 'wonik'
>> new_firstN, new_lastN = first_name, last_name

 

λ‹€λ₯Έ 객체λ₯Ό νŠœν”Œλ‘œ λ§Œλ“€κΈ° : tuple()

 

tuple()을 μ΄μš©ν•˜λ©΄ λ‹€λ₯Έ 객체λ₯Ό νŠœν”Œλ‘œ λ³€ν™˜μ‹œν‚¬ 수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄ 리슀트λ₯Ό νŠœν”Œλ‘œ λ°”κΎΌλ‹€λ©΄

 

>> name = ['jang', 'won', 'ik']
>>tuple(name)
('jang', 'won', 'ik')

 

을 κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.

 

νŠœν”Œκ³Ό 리슀트

리슀트 λŒ€μ‹ μ— νŠœν”Œμ„ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ νŠœν”Œμ€ 리슀트의 append(), insert()λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  νŠœν”Œμ„ μ‚¬μš©ν•˜λŠ”λ°μ—λŠ” λ‹€μŒκ³Ό 같은 μ΄μœ κ°€ μžˆλ‹€.

 

  • νŠœν”Œμ€ 더 적은 곡간을 μ‚¬μš©ν•œλ‹€.

    λ¦¬μŠ€νŠΈλŠ” λ°μ΄ν„°μ˜ 가변성을 μœ„ν•΄ Multi Block Memory에 μ €μž₯λ˜μ§€λ§Œ, νŠœν”Œμ€ κ³ μ • 길이의 데이터λ₯Ό μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— Single Block Memoryλ₯Ό μ‚¬μš©ν•œλ‹€.

  • μ‹€μˆ˜λ‘œ νŠœν”Œμ˜ ν•­λͺ©μ΄ 손상될 μ—Όλ €κ°€ μ—†λ‹€.

    μœ„μ—λ„ 말 ν–ˆλ“―μ΄ νŠœν”Œμ€ λΆˆλ³€ν˜•μ΄κΈ° λ•Œλ¬Έμ— κ°€λŠ₯ν•˜λ‹€.

  • νŠœν”Œμ„ λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

    λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€λŠ” λ³€ν•˜μ§€ λͺ» ν•˜κΈ° λ•Œλ¬Έμ— λ³€ν•˜μ§€ μ•ŠλŠ” νŠœν”Œμ„ μ‚¬μš©ν•œλ‹€.

  • λ„€μž„λ“œ νŠœν”Œμ€ 객체의 λ‹¨μˆœν•œ λŒ€μ•ˆμ΄λ  수 μžˆλ‹€.

    λ‹€μŒμ— 배울 λ‚΄μš©μ΄λ―€λ‘œ μƒλž΅ν•œλ‹€. ν˜Ήμ‹œ κΆκΈˆν•˜λ‹€λ©΄ 링크둜 μ™€μ„œ ν™•μΈν•˜κΈΈ λ°”λž€λ‹€!

  • ν•¨μˆ˜μ˜ μΈμžλ“€μ€ νŠœν”Œλ‘œ μ „λ‹¬λœλ‹€.

    이 뢀뢄도 ν•¨μˆ˜μ—μ„œ μ„€λͺ…ν•  λ‚΄μš©μ΄λ―€λ‘œ κΆκΈˆν•˜λ‹€λ©΄ 링크λ₯Ό 톡해 ν™•μΈν•˜κΈΈ λ°”λž€λ‹€.!

λŒ“κΈ€