| μνμ€ μλ£ν νμ©νκΈ°
- 리μ€νΈ, νν, range, λ¬Έμμ΄μ 곡ν΅μ μ λͺ¨λ κ°μ΄ μ°μμ (sequence)μΌλ‘ μ΄μ΄μ Έ μλ€λ μ .
- μνμ€ μλ£ν (sequence types) : 리μ€νΈ, νν, range, λ¬Έμμ΄μ²λΌ κ°μ΄ μ°μμ μΌλ‘ μ΄μ΄μ§ μλ£ν.
| μνμ€ μλ£νμ κ³΅ν΅ κΈ°λ₯ μ¬μ©νκΈ°
- μνμ€ μλ£νμ κ°μ₯ ν° νΉμ§μ 곡ν΅λ λμκ³Ό κΈ°λ₯μ μ 곡.
- μνμ€ κ°μ²΄ : μνμ€ μλ£νμΌλ‘ λ§λ κ°μ²΄.
- μμ(element) : μνμ€ κ°μ²΄μ λ€μ΄μλ κ° κ°.
| νΉμ κ°μ΄ μλμ§ νμΈνκΈ°
- κ° in μνμ€ κ°μ²΄
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> 30 in a
True
>>> 100 in a
False
- μνμ€ κ°μ²΄μ in μ°μ°μλ₯Ό μ¬μ©νλ©΄ νΉμ κ°μ΄ μμ λ True, μμΌλ©΄ Falseκ° λμ΄.
- κ° not in μνμ€ κ°μ²΄
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> 100 not in a
True
>>> 30 not in a
False
- not inμ νΉμ κ°μ΄ μμΌλ©΄ True, μμΌλ©΄ Falseκ° λμ΄.
- νν, range, λ¬Έμμ΄λ λμΌν λ°©λ²μΌλ‘ μ¬μ© κ°λ₯.
| μνμ€ κ°μ²΄ μ°κ²°νκΈ°
- μνμ€ κ°μ²΄λ + μ°μ°μλ₯Ό μ¬μ©νμ¬ κ°μ²΄λ₯Ό μλ‘ μ°κ²°νμ¬ μ κ°μ²΄λ₯Ό λ§λ€ μ μμ.
- μνμ€ κ°μ²΄1 + μνμ€ κ°μ²΄2
>>> a = [0, 10, 20, 30]
>>> b = [9, 8, 7, 6]
>>> a + b
[0, 10, 20, 30, 9, 8, 7, 6]
- λ³μλ₯Ό λ§λ€μ§ μκ³ λ¦¬μ€νΈ μ¬λ¬ κ°λ₯Ό μ§μ μ°κ²°ν΄λ μκ΄ μμ.
- λ¨, μνμ€ μλ£ν μ€μμ rangeλ + μ°μ°μλ‘ μ°κ²°ν μ μμ.
>>> range(0, 10) + range(10, 20)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
range(0, 10) + range(10, 20)
TypeError: unsupported operand type(s) for +: 'range' and 'range'
- μ΄λλ rangeλ₯Ό 리μ€νΈ λλ ννλ‘ λ§λ€μ΄μ μ°κ²°ν κ².
>>> list(range(0,10)) + list(range(10,20))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> tuple(range(0,10)) + tuple(range(10,20))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
- λ¬Έμμ΄μ + μ°μ°μλ‘ μ¬λ¬ λ¬Έμμ΄ μ°κ²° κ°λ₯.
>>> 'Hello, ' + 'world!'
'Hello, world!'
[μ°Έκ³ ] λ¬Έμμ΄μ μ«μ μ°κ²°νκΈ°
>>> 'Hello, ' + 10
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
'Hello, ' + 10
TypeError: Can't convert 'int' object to str implicitly
- μ μλ₯Ό λ¬Έμμ΄λ‘ λ³νν μ μμ΄μ TypeErrorκ° λ°μ.
- μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ strμ μ¬μ©νμ¬ μ«μ(μ μ, μ€μ)λ₯Ό λ¬Έμμ΄λ‘ λ³ννλ©΄ λ¨.
- 'λ¬Έμμ΄' + str(μ μ)
- 'λ¬Έμμ΄' + str(μ€μ)
>>> 'Hello, ' + str(10) # strμ μ¬μ©νμ¬ μ μλ₯Ό λ¬Έμμ΄λ‘ λ³ν
'Hello, 10'
>>> 'Hello, ' + str(1.5) # strμ μ¬μ©νμ¬ μ€μλ₯Ό λ¬Έμμ΄λ‘ λ³ν
'Hello, 1.5'
- μ¦, λ¬Έμμ΄μ + λ₯Ό μ¬μ©ν λλ μ΄λ€ ννμ κ°μ΄λ strμ μ¬μ©ν΄μ λ¬Έμμ΄λ‘ λ§μΆ°μ£Όλ©΄ λ¨.
- λ¬Έμμ΄κ³Ό μ«μλ₯Ό κ°λ¨νκ² μ‘°ν©ν μ μμ΄μ κ³μ° κ²°κ³Όμ μ€λͺ μ ν¨κ» μΆλ ₯ν λ νΈλ¦¬.
| μνμ€ κ°μ²΄ λ°λ³΅νκΈ°
- * μ°μ°μλ μνμ€ κ°μ²΄λ₯Ό νΉμ νμλ§νΌ λ°λ³΅νμ¬ μ μνμ€ κ°μ²΄λ₯Ό λ§λ¦.
- 0 λλ μμλ₯Ό κ³±νλ©΄ λΉ κ°μ²΄κ° λμ€λ©° μ€μλ κ³±ν μ μμ.
- μνμ€ κ°μ²΄ * μ μ
- μ μ * μνμ€ κ°μ²΄
>>> [0, 10, 20, 30] * 3
[0, 10, 20, 30, 0, 10, 20, 30, 0, 10, 20, 30]
- μμ 0, 10, 20, 30μ΄ λ€μ΄μλ 리μ€νΈλ₯Ό 3λ² λ°λ³΅ν΄μ μ 리μ€νΈλ₯Ό λ§λ€μμ.
- rangeλ * μ°μ°μλ₯Ό μ¬μ©νμ¬ λ°λ³΅ν μ μμ.
>>> range(0, 5, 2) * 3
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
range(0, 5, 2) * 3
TypeError: unsupported operand type(s) for *: 'range' and 'int'
- rangeλ₯Ό 리μ€νΈ λλ ννλ‘ λ§λ€μ΄μ λ°λ³΅νλ©΄ λ¨.
>>> list(range(0, 5, 2)) * 3
[0, 2, 4, 0, 2, 4, 0, 2, 4]
>>> tuple(range(0, 5, 2)) * 3
[0, 2, 4, 0, 2, 4, 0, 2, 4]
- λ¬Έμμ΄μ * μ°μ°μλ₯Ό μ¬μ©νμ¬ λ°λ³΅.
>>> 'Hello, ' * 3
'Hello, Hello, Hello, '
| μνμ€ κ°μ²΄μ μμ κ°μ ꡬνκΈ°
- μνμ€ κ°μ²΄μλ μμκ° μ¬λ¬ κ° λ€μ΄μλλ°, μ΄ μμμ κ°μ(κΈΈμ΄)λ₯Ό ꡬν λλ len ν¨μλ₯Ό μ¬μ©.
- lenμ κΈΈμ΄λ₯Ό λ»νλ lengthμμ λ°μ΄.
- len( μνμ€ κ°μ²΄ )
| 리μ€νΈμ ννμ μμ κ°μ ꡬνκΈ°
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> len(a)
10
>>> b = (38, 76, 43, 62, 19)
>>> len(b)
5
| rangeμ μ«μ μμ± κ°μ ꡬνκΈ°
- rangeμ len ν¨μλ₯Ό μ¬μ©νλ©΄ μ«μκ° μμ±λλ κ°μλ₯Ό ꡬν¨.
>>> len(range(1, 10, 2))
5
- μ€λ¬΄μμλ range λ±μ μ¬μ©νμ¬ λ¦¬μ€νΈλ ννμ μμ±νκ±°λ, λ€μν λ°©λ²μΌλ‘ μμλ₯Ό μΆκ°, μμ , λ°λ³΅νλ―λ‘ μμμ κ°μκ° νλμ 보μ΄μ§ μμ.
- κ·Έλμ len ν¨μλ₯Ό μμ£Ό νμ©!
| λ¬Έμμ΄μ κΈΈμ΄ κ΅¬νκΈ°
- λ¬Έμμ΄λ μνμ€ μλ£νμ΄λ―λ‘ len ν¨μ μ¬μ©.
>>> hello = 'Hello, world!'
>>> len(hello)
13
- λ¬Έμμ΄μ κΈΈμ΄λ 곡백κΉμ§ ν¬ν¨ν¨.
- λ°μ΄νλ μ μΈ : λ°μ΄νλ λ¬Έμμ΄μ νννλ λ¬Έλ²μΌ λΏ λ¬Έμμ΄μ κΈΈμ΄μλ ν¬ν¨ x
[μ°Έμ‘°] UTF-8 λ¬Έμμ΄μ λ°μ΄νΈ μ ꡬνκΈ°
- νκΈμ UTF-8 μΈμ½λ©μΌλ‘ μ μ₯νλλ°, λ¬Έμμ΄μ΄ μ°¨μ§νλ μ€μ λ°μ΄νΈ μλ₯Ό ꡬν μ μμ.
>>> hello = 'μλ
νμΈμ'
>>> len(hello.encode('utf-8'))
15
- UTF-8μμ νκΈ κΈμ νλλ 3λ°μ΄νΈλ‘ νν.
- νμ΄μ¬μ λ²μ μ λ°λΌ κ²°κ³Όκ° λ€λ¦μΌλ‘ μ£Όμ.
| μΈλ±μ€ μ¬μ©νκΈ°
- μνμ€ κ°μ²΄μ λ€μ΄μλ μμμ μ κ·Όνλ λ°©λ²μ΄ μμ.
- μνμ€ κ°μ²΄μ κ° μμλ μμκ° μ ν΄μ Έ μκ³ , μ΄λ₯Ό μΈλ±μ€λΌκ³ λΆλ¦.
- μνμ€ κ°μ²΄μ [ ]λ₯Ό λΆμ΄κ³ μλμ κ° μμμ μΈλ±μ€λ₯Ό μ§μ νλ©΄ ν΄λΉ μμ μ κ·Ό κ°λ₯.
- μνμ€ κ°μ²΄[μΈλ±μ€]
>>> a = [38, 21, 53, 62, 19]
>>> a[0] # 리μ€νΈμ 첫 λ²μ§Έ(μΈλ±μ€ 0) μμ μΆλ ₯
38
>>> a[2] # 리μ€νΈμ μΈ λ²μ§Έ(μΈλ±μ€ 2) μμ μΆλ ₯
53
>>> a[4] # 리μ€νΈμ λ€μ― λ²μ§Έ(μΈλ±μ€ 4) μμ μΆλ ₯
19
- μΈλ±μ€ (index, μμΈ) : μμΉ κ°.
- μνμ€ κ°μ²΄μ μΈλ±μ€λ νμ 0λΆν° μμ.
- νν, range, λ¬Έμμ΄λ []μ μΈλ±μ€λ₯Ό μ§μ νλ©΄ ν΄λΉ μμλ₯Ό κ°μ Έμ¬ μ μμ.
>>> b = (38, 21, 53, 62, 19)
>>> b[0] # ννμ 첫 λ²μ§Έ(μΈλ±μ€ 0) μμ μΆλ ₯
38
>>> r = range(0, 10, 2)
>>> r[2] # rangeμ μΈ λ²μ§Έ(μΈλ±μ€ 2) μμ μΆλ ₯
4
>>> hello = 'Hello, world!'
>>> hello[7] # λ¬Έμμ΄μ μ¬λ λ²μ§Έ(μΈλ±μ€ 7) μμ μΆλ ₯
'w'
[μ°Έκ³ ] μνμ€ κ°μ²΄μ μΈλ±μ€λ₯Ό μ§μ νμ§ μμΌλ©΄?
- μνμ€ κ°μ²΄μ μΈλ±μ€λ₯Ό μ§μ νμ§ μμ μνλ ν΄λΉ κ°μ²΄ μ 체λ₯Ό μλ―Έ.
>>> a = [38, 21, 53, 62, 19]
>>> a # μνμ€ κ°μ²΄μ μΈλ±μ€λ₯Ό μ§μ νμ§ μμΌλ©΄ μνμ€ κ°μ²΄ μ 체λ₯Ό λ»ν¨
[38, 21, 53, 62, 19]
[μ°Έκ³ ] __getitem__ λ©μλ
- μνμ€ κ°μ²΄μμ [ ]λ₯Ό μ¬μ©νλ©΄ μ€μ λ‘λ __getitem__ λ©μλλ₯Ό νΈμΆνμ¬ μμλ₯Ό κ°μ Έμ΄.
- __getitem__ λ©μλλ₯Ό μ§μ νΈμΆν΄μ μμλ₯Ό κ°μ Έμ¬ μλ μμ
- μνμ€κ°μ²΄.__getitem__(μΈλ±μ€)
>>> a = [38, 21, 53, 62, 19]
>>> a.__getitem__(1)
21
| μμ μΈλ±μ€ μ§μ νκΈ°
>>> a = [38, 21, 53, 62, 19]
>>> a[-1] # 리μ€νΈμ λ€μμ 첫 λ²μ§Έ(μΈλ±μ€ -1) μμ μΆλ ₯
19
>> a[-5] # 리μ€νΈμ λ€μμ λ€μ― λ²μ§Έ(μΈλ±μ€ -5) μμ μΆλ ₯
38
- μνμ€ κ°μ²΄μ μΈλ±μ€λ₯Ό μμλ‘ μ§μ νλ©΄ λ€μμλΆν° μμμ μ κ·Ό.
- νν, range, λ¬Έμμ΄λ μμ μΈλ±μ€λ₯Ό μ§μ νλ©΄ λ€μμλΆν° μμμ μ κ·Ό.
>>> b = (38, 21, 53, 62, 19)
>>> b[-1] # ννμ λ€μμ 첫 λ²μ§Έ(μΈλ±μ€ -1) μμ μΆλ ₯
19
>>> r = range(0, 10, 2)
>>> r[-3] # rangeμ λ€μμ μΈ λ²μ§Έ(μΈλ±μ€ -3) μμ μΆλ ₯
4
>>> hello = 'Hello, world!'
>>> hello[-4] # λ¬Έμμ΄μ λ€μμ λ€ λ²μ§Έ(μΈλ±μ€ -4) μμ μΆλ ₯
'r'
| μΈλ±μ€μ λ²μλ₯Ό λ²μ΄λλ©΄?
>>> a = [38, 21, 53, 62, 19]
>>> a[5] # μΈλ±μ€ 5λ λ²μλ₯Ό λ²μ΄λ¬μΌλ―λ‘ μλ¬
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a[5]
IndexError: list index out of range
- IndexError : 리μ€νΈμ μΈλ±μ€κ° λ²μλ₯Ό λ²μ΄λ¬λ€λ μ€λ₯.
- λ§μ§λ§ μμμ μΈλ±μ€λ μνμ€ κ°μ²΄μ μμ κ°μλ³΄λ€ 1 μλ€λ κ² μ μ!
| λ§μ§λ§ μμμ μ κ·ΌνκΈ°
>>> a = [38, 21, 53, 62, 19]
>>> len(a)
5
>>> a[len(a)]
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
a[len(a)]
IndexError: list index out of range
- len(5)λ 5μ΄λ―λ‘ μΈλ±μ€κ° λ²μλ₯Ό λ²μ΄λ¨.
>>> a[len(a) - 1] # λ§μ§λ§ μμ(μΈλ±μ€ 4) μΆλ ₯
19
- μ΄ λ°©λ²μ μνμ€ κ°μ²΄μ λ§μ§λ§ μΈλ±μ€λ₯Ό ꡬν λ μ’ μ’ μ¬μ©νλ λ°©λ².
| μμμ κ° ν λΉνκΈ°
- μνμ€ κ°μ²΄λ [ ]λ‘ μμμ μ κ·Όν λ€ = λ‘ κ°μ ν λΉ.
- μνμ€κ°μ²΄[μΈλ±μ€] = κ°
>>> a = [0, 0, 0, 0, 0] # 0μ΄ 5κ° λ€μ΄μλ 리μ€νΈ
>>> a[0] = 38
>>> a[1] = 21
>>> a[2] = 53
>>> a[3] = 62
>>> a[4] = 19
>>> a
[38, 21, 53, 62, 19]
>>> a[0]
38
>>> a[4]
19
- μ΄λλ λ²μλ₯Ό λ²μ΄λ μΈλ±μ€λ μ§μ ν μ μμ.
>>> a[5] = 90
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
a[5] = 90
IndexError: list assignment index out of range
- ννμ μμ μ μ₯λ μμλ₯Ό λ³κ²½ν μ μμ.
- λ°λΌμ ννμ μμμ μ κ·Όνμ¬ κ°μ ν λΉνλ©΄ μλ¬ λ°μ.
>>> b = (0, 0, 0, 0, 0)
>>> b[0] = 38
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
b[0] = 38
TypeError: 'tuple' object does not support item assignment
- rangeμ λ¬Έμμ΄λ μ μ₯λ μμλ₯Ό λ³κ²½ν μ μμ.
>>> r = range(0, 10, 2)
>>> r[0] = 3
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
r[0] = 3
TypeError: 'range' object does not support item assignment
>>> hello = 'Hello, world!'
>>> hello[0] = 'A'
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
hello[0] = 'A'
TypeError: 'str' object does not support item assignment
- μ¦, μνμ€ μλ£νμμ νν, range, λ¬Έμμ΄μ μ½κΈ° μ μ©!
| del λ‘ μμ μμ νκΈ°
- del λ€μ μμ ν μμλ₯Ό μ§μ
- del μνμ€κ°μ²΄[μΈλ±μ€]
>>> a = [38, 21, 53, 62, 19]
>>> del a[2]
>>> a
[38, 21, 62, 19]
- νν, range, λ¬Έμμ΄μ μμ μ μ₯λ μμλ₯Ό μμ ν μ μμ!!