| ์ฌ๋ผ์ด์ค ์ฌ์ฉํ๊ธฐ
- ์ฌ๋ผ์ด์ค : ๋ฌด์์ธ๊ฐ์ ์ผ๋ถ๋ฅผ ์๋ผ๋ธ๋ค๋ ๋ป.
- ์ํ์ค ์ฌ๋ผ์ด์ค๋ ๋ง ๊ทธ๋๋ก ์ํ์ค ๊ฐ์ฒด์ ์ผ๋ถ๋ฅผ ์๋ผ๋.
- ์ํ์ค๊ฐ์ฒด[์์์ธ๋ฑ์ค : ๋์ธ๋ฑ์ค]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[0:4] # ์ธ๋ฑ์ค 0๋ถํฐ 3๊น์ง ์๋ผ์ ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ฆ
[0, 10, 20, 30]
- [] ์์ ์์ ์ธ๋ฑ์ค์ ๋ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ๋ฉด ํด๋น ๋ฒ์์ ๋ฆฌ์คํธ๋ฅผ ์๋ผ์ ๊ฐ์ ธ์ฌ ์ ์์.
- ๋ ์ธ๋ฑ์ค๋ ๊ฐ์ ธ์ค๋ ค๋ ๋ฒ์์ ํฌํจ x
- a[1:1]์ฒ๋ผ ์์ ์ธ๋ฑ์ค์ ๋ ์ธ๋ฑ์ค๊ฐ ๊ฐ์ผ๋ฉด ์๋ฌด๊ฒ๋ ๊ฐ์ ธ์ค์ง ์์.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[1:1] # ์ธ๋ฑ์ค 1๋ถํฐ 0๊น์ง ์๋ผ์ ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ฆ
[]
>>> a[1:2] # ์ธ๋ฑ์ค 1๋ถํฐ 1๊น์ง ์๋ผ์ ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ฆ
[10]
| ๋ฆฌ์คํธ์ ์ค๊ฐ ๋ถ๋ถ ๊ฐ์ ธ์ค๊ธฐ
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[4:7] # ์ธ๋ฑ์ค 4๋ถํฐ 6๊น์ง ์์ 3๊ฐ๋ฅผ ๊ฐ์ ธ์ด
[40, 50, 60]
- ์ฌ๋ผ์ด์ค๋ ์์๋ฅผ ์ธ๋ฑ์ค๋ก ์ง์ ๊ฐ๋ฅ.
>>> a[4:-1] # ์ธ๋ฑ์ค 4๋ถํฐ -2๊น์ง ์์ 5๊ฐ๋ฅผ ๊ฐ์ ธ์ด
[40, 50, 60, 70, 80]
- ์ธ๋ฑ์ค์์ -1์ ๋ค์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์๋ฏธ.
- ๋ ์ธ๋ฑ์ค๋ ๊ฐ์ ธ์ค๋ ค๋ ์ธ๋ฑ์ค๋ณด๋ค 1์ ๋ ํฌ๊ฒ ์ง์ ํ๋ค๊ณ ํ์ผ๋ฏ๋ก
- ์ค์ ๋ก๋ ๋ค์์ ๋๋ฒ์งธ(์ธ๋ฑ์ค -2) ์์์ธ 80๊น์ง๋ง ๊ฐ์ ธ์ด.
- ์์๋ ์ซ์๊ฐ ์์์๋ก ํฐ ์(-1์ -2๋ณด๋ค 1์ด ๋ ํผ!)
| ์ธ๋ฑ์ค ์ฆ๊ฐํญ ์ฌ์ฉํ๊ธฐ
- ์ฌ๋ผ์ด์ค๋ ์ธ๋ฑ์ค์ ์ฆ๊ฐํญ์ ์ง์ ํ์ฌ ๋ฒ์ ๋ด์์ ์ธ๋ฑ์ค๋ฅผ ๊ฑด๋๋ฐ๋ฉฐ ์์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์.
- ์ธ๋ฑ์ค์ ์ฆ๊ฐํญ์ด์ง ์์์ ๊ฐ ์ฆ๊ฐํญ์ด ์๋๋ผ๋ ์ ์ฃผ์!
- ์ํ์ค๊ฐ์ฒด[์์์ธ๋ฑ์ค : ๋์ธ๋ฑ์ค : ์ธ๋ฑ์ค์ฆ๊ฐํญ]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:8:3] # ์ธ๋ฑ์ค 2๋ถํฐ 3์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 7๊น์ง ๊ฐ์ ธ์ด
[20, 50]
- ์์ ์ธ๋ฑ์ค๊ฐ 2์ด๋ฏ๋ก 20
- ์ธ๋ฑ์ค ์ฆ๊ฐํญ์ด 3์ด๋ฏ๋ก 50๊ณผ 80์ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง
- ๋ ์ธ๋ฑ์ค๋ฅผ 8๋ก ์ง์ ํ์ผ๋ฏ๋ก ์ธ๋ฑ์ค 7๊น์ง๋ง ๊ฐ์ ธ์์ผ ํจ.
- ์ธ๋ฑ์ค ์ฆ๊ฐํญ์ ์ง์ ํด๋ ๊ฐ์ ธ์ค๋ ค๋ ์ธ๋ฑ์ค(๋ ์ธ๋ฑ์ค - 1)๋ฅผ ๋์ด์ค ์ ์์์ ์ฃผ์!
- ๋ ์ธ๋ฑ์ค - 1๊ณผ ์ฆ๊ฐํ ์ธ๋ฑ์ค๊ฐ ์ผ์นํ๋ฉด ํด๋น ์์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์.
>>> a[2:9:3] # ์ธ๋ฑ์ค 2๋ถํฐ 3์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 8๊น์ง ๊ฐ์ ธ์ด
[20, 50, 80]
| ์ธ๋ฑ์ค ์๋ตํ๊ธฐ
- ์์ ์ธ๋ฑ์ค์ ๋ ์ธ๋ฑ์ค๋ฅผ ์๋ต ๊ฐ๋ฅ.
- ์ํ์ค ๊ฐ์ฒด์ ๊ธธ์ด๋ฅผ ๋ชฐ๋ผ๋ ๋๊ธฐ ๋๋ฌธ์ ์์ฃผ ์ฐ์ด๋ ๋ฐฉ์.
- ์ํ์ค ๊ฐ์ฒด์ ๋ง์ง๋ง ์ผ๋ถ๋ถ๋ง ์ถ๋ ฅํ ๋ ์ฌ์ฉ.
- ์ํ์ค๊ฐ์ฒด[ : ๋์ธ๋ฑ์ค]
- ์ํ์ค๊ฐ์ฒด[์์์ธ๋ฑ์ค : ] : ์์์ธ๋ฑ์ค๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ๊ฐ์ ธ์ด.
- ์ํ์ค๊ฐ์ฒด [ : ] : ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ด.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[:7] # ๋ฆฌ์คํธ ์ฒ์๋ถํฐ ์ธ๋ฑ์ค 6๊น์ง ๊ฐ์ ธ์ด
[0, 10, 20, 30, 40, 50, 60]
>>> a[7:] # ์ธ๋ฑ์ค 7๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ๊ฐ์ ธ์ด
[70, 80, 90]
>>> a[:] # ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ด
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
| ์ธ๋ฑ์ค๋ฅผ ์๋ตํ๋ฉด์ ์ฆ๊ฐํญ ์ฌ์ฉํ๊ธฐ
- ์ํ์ค๊ฐ์ฒด[ : ๋์ธ๋ฑ์ค : ์ฆ๊ฐํญ]
- ์ํ์ค๊ฐ์ฒด[์์์ธ๋ฑ์ค : : ์ฆ๊ฐํญ]
- ์ํ์ค๊ฐ์ฒด[ : : ์ฆ๊ฐํญ]
- ์ํ์ค๊ฐ์ฒด[ : : ]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[:7:2] # ๋ฆฌ์คํธ์ ์ฒ์๋ถํฐ ์ธ๋ฑ์ค๋ฅผ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 6๊น์ง ๊ฐ์ ธ์ด
[0, 20, 40, 60]
>>> a[7::2] # ์ธ๋ฑ์ค 7๋ถํฐ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์๊น์ง ๊ฐ์ ธ์ด
[70, 90]
>>> a[::2] # ๋ฆฌ์คํธ ์ ์ฒด์์ ์ธ๋ฑ์ค 0๋ถํฐ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์์๋ฅผ ๊ฐ์ ธ์ด
[0, 20, 40, 60, 80]
>>> a[::] # ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ด
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
[์ฐธ๊ณ ] ์ฌ๋ผ์ด์ค์ ์ธ๋ฑ์ค ์ฆ๊ฐํญ์ ์์๋ก ์ง์ ํ๋ฉด?
- ์ฌ๋ผ์ด์ค์์ ์ธ๋ฑ์ค ์ฆ๊ฐํญ์ ์์๋ก ์ง์ ํ๋ฉด ์์๋ฅผ ๋ค์์๋ถํฐ ๊ฐ์ ธ์ฌ ์ ์์.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[5:1:-1]
[50, 40, 30, 20]
- ์ธ๋ฑ์ค๊ฐ ๊ฐ์ํ๋ฏ๋ก ๋ ์ธ๋ฑ์ค๋ณด๋ค ์์ ์ธ๋ฑ์ค๋ฅผ ๋ ํฌ๊ฒ ์ง์ ํด์ผ ํจ.
- ๋ ์ธ๋ฑ์ค๋ ๊ฐ์ ธ์ค๋ ค๋ ๋ฒ์์ ํฌํจ x
>>> a[::-1]
[90, 80, 70, 60, 50, 40, 30, 20, 10, 0]
- ๋ฆฌ์คํธ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์ํ์ค ๊ฐ์ฒด์ ์ฌ์ฉ ๊ฐ๋ฅ.
| len ์์ฉํ๊ธฐ
- len์ ์์ฉํ์ฌ ๋ฆฌ์คํธ ์ ์ฒด ๊ฐ์ ธ์ค๊ธฐ
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[0:len(a)] # ์์ ์ธ๋ฑ์ค์ 0, ๋ ์ธ๋ฑ์ค์ len(a) ์ง์ ํ์ฌ ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ด
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[:len(a)] # ์์ ์ธ๋ฑ์ค ์๋ต, ๋ ์ธ๋ฑ์ค์ len(a) ์ง์ ํ์ฌ ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ด
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
- len(a)๋ 10์ด๊ณ , a[0 : 10]๊ณผ ๊ฐ์.
| ํํ, range, ๋ฌธ์์ด์ ์ฌ๋ผ์ด์ค ์ฌ์ฉํ๊ธฐ
>>> b = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
>>> b[4:7] # ์ธ๋ฑ์ค 4๋ถํฐ 6๊น์ง ์์ 3๊ฐ๋ฅผ ๊ฐ์ ธ์ด
(40, 50, 60)
>>> b[4:] # ์ธ๋ฑ์ค 4๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ๊ฐ์ ธ์ด
(40, 50, 60, 70, 80, 90)
>>> b[:7:2] # ํํ์ ์ฒ์๋ถํฐ ์ธ๋ฑ์ค๋ฅผ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 6๊น์ง ๊ฐ์ ธ์ด
(0, 20, 40, 60)
- range์ ์ฌ๋ผ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ๋ ๋ฒ์์ ์ซ์๋ฅผ ์์ฑํ๋ range ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ฆ.
>>> r = range(10)
>>> r
range(0, 10)
>>> r[4:7] # ์ธ๋ฑ์ค 4๋ถํฐ 6๊น์ง ์ซ์ 3๊ฐ๋ฅผ ์์ฑํ๋ range ๊ฐ์ฒด๋ฅผ ๋ง๋ฆ
range(4, 7)
>>> r[4:] # ์ธ๋ฑ์ค 4๋ถํฐ 9๊น์ง ์ซ์ 6๊ฐ๋ฅผ ์์ฑํ๋ range ๊ฐ์ฒด๋ฅผ ๋ง๋ฆ
range(4, 10)
>>> r[:7:2] # ์ธ๋ฑ์ค 0๋ถํฐ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 6๊น์ง ์ซ์ 4๊ฐ๋ฅผ ์์ฑํ๋ range ๊ฐ์ฒด๋ฅผ ๋ง๋ฆ
range(0, 7, 2)
- range๋ ๋ฆฌ์คํธ, ํํ๊ณผ๋ ๋ฌ๋ฆฌ ์์๊ฐ ๋ชจ๋ ํ์๋์ง ์๊ณ ์์ฑ ๋ฒ์๋ง ํ์.
- ์๋ผ๋ธ range ๊ฐ์ฒด๋ฅผ ๋ฆฌ์คํธ๋ก ๋ง๋ค๋ ค๋ฉด list์ ๋ฃ์ด์ผ ํจ.
>>> list(r[:7:2])
[0, 2, 4, 6]
- ๋ฌธ์์ด๋ ์ฌ๋ผ์ด์ค ์ฌ์ฉ ๊ฐ๋ฅ.
>>> hello = 'Hello, world!'
>>> hello[2:9] # ์ธ๋ฑ์ค 2๋ถํฐ ์ธ๋ฑ์ค 8๊น์ง ์๋ผ์ ๋ฌธ์์ด์ ๋ง๋ฆ
'llo, wo'
>>> hello[2:] # ์ธ๋ฑ์ค 2๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ์๋ผ์ ๋ฌธ์์ด์ ๋ง๋ฆ
'llo, world!'
>>> hello[:9:2] # ๋ฌธ์์ด์ ์ฒ์๋ถํฐ ์ธ๋ฑ์ค๋ฅผ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 8๊น์ง ์๋ผ์ ๋ฌธ์์ด์ ๋ง๋ฆ
'Hlo o'
[์ฐธ๊ณ ] slice ๊ฐ์ฒด ์ฌ์ฉํ๊ธฐ
- slice ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ํ์ค ๊ฐ์ฒด๋ฅผ ์๋ผ๋ผ ์ ์์.
- ์ฌ๋ผ์ด์ค๊ฐ์ฒด = slice(๋์ธ๋ฑ์ค)
- ์ฌ๋ผ์ด์ค๊ฐ์ฒด = slice(์์์ธ๋ฑ์ค, ๋์ธ๋ฑ์ค)
- ์ฌ๋ผ์ด์ค๊ฐ์ฒด = slice(์์์ธ๋ฑ์ค, ๋์ธ๋ฑ์ค, ์ธ๋ฑ์ค์ฆ๊ฐํญ)
- ์ํ์ค๊ฐ์ฒด[์ฌ๋ผ์ด์ค๊ฐ์ฒด]
- ์ํ์ค๊ฐ์ฒด.__getitem__(์ฌ๋ผ์ด์ค๊ฐ์ฒด)
>>> range(10)[slice(4, 7, 2)]
range(4, 7, 2)
>>> range(10).__getitem__(slice(4, 7, 2))
range(4, 7, 2)
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> s = slice(4, 7) # ์ธ๋ฑ์ค 4๋ถํฐ 6๊น์ง ์๋ฅด๋ slice ๊ฐ์ฒด ์์ฑ
>>> a[s]
[40, 50, 60]
>>> r = range(10)
>>> r[s]
range(4, 7)
>>> hello = 'Hello, world!'
>>> hello[s]
'o, '
| ์ฌ๋ผ์ด์ค์ ์์ ํ ๋นํ๊ธฐ
- ์ํ์ค ๊ฐ์ฒด๋ ์ฌ๋ผ์ด์ค๋ก ๋ฒ์๋ฅผ ์ง์ ํ์ฌ ์ฌ๋ฌ ์์์ ๊ฐ์ ํ ๋นํ ์ ์์.
- ์ํ์ค๊ฐ์ฒด[์์์ธ๋ฑ์ค : ๋์ธ๋ฑ์ค] = ์ํ์ค๊ฐ์ฒด
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:5] = ['a', 'b', 'c'] # ์ธ๋ฑ์ค 2๋ถํฐ 4๊น์ง ๊ฐ ํ ๋น
>>> a
[0, 10, 'a', 'b', 'c', 50, 60, 70, 80, 90]
- ์ด๋ ๊ฒ ๋ฒ์๋ฅผ ์ง์ ํด์ ์์๋ฅผ ํ ๋นํ์ ๊ฒฝ์ฐ์๋ ์๋ ์๋ ๋ฆฌ์คํธ๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์ ๋ฆฌ์คํธ๋ ์์ฑ๋์ง ์์.
- ์ฌ๋ผ์ด์ค ๋ฒ์์ ํ ๋นํ ๋ฆฌ์คํธ์ ์์ ๊ฐ์๋ฅผ ๋ง์ถ์ง ์์๋ ๋จ.
- ํ ๋นํ ์์ ๊ฐ์๊ฐ ์ ์ผ๋ฉด ๊ทธ๋งํผ ๋ฆฌ์คํธ์ ์์ ๊ฐ์๋ ์ค์ด๋ฌ.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:5] = ['a'] # ์ธ๋ฑ์ค 2๋ถํฐ 4๊น์ง์ ๊ฐ 1๊ฐ๋ฅผ ํ ๋นํ์ฌ ์์์ ๊ฐ์๊ฐ ์ค์ด๋ฆ
>>> a
[0, 10, 'a', 50, 60, 70, 80, 90]
- ํ ๋นํ ์์ ๊ฐ์๊ฐ ๋ง์ผ๋ฉด ๊ทธ๋งํผ ๋ฆฌ์คํธ์ ์์ ๊ฐ์๋ ๋์ด๋จ.
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:5] = ['a', 'b', 'c', 'd', 'e'] # ์ธ๋ฑ์ค 2๋ถํฐ 4๊น์ง ๊ฐ 5๊ฐ๋ฅผ ํ ๋นํ์ฌ ์์์ ๊ฐ์๊ฐ ๋์ด๋จ
>>> a
[0, 10, 'a', 'b', 'c', 'd', 'e', 50, 60, 70, 80, 90]
- ์ธ๋ฑ์ค ์ฆ๊ฐํญ์ ์ง์ ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๊ฑด๋๋ฐ๋ฉด์ ํ ๋น.
- ์ํ์ค๊ฐ์ฒด[์์์ธ๋ฑ์ค : ๋์ธ๋ฑ์ค : ์ธ๋ฑ์ค ์ฆ๊ฐํญ] = ์ํ์ค๊ฐ์ฒด
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:8:2] = ['a', 'b', 'c'] # ์ธ๋ฑ์ค 2๋ถํฐ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 7๊น์ง ๊ฐ ํ ๋น
>>> a
[0, 10, 'a', 30, 'b', 50, 'c', 70, 80, 90]
- ๋จ, ์ธ๋ฑ์ค ์ฆ๊ฐํญ์ ์ง์ ํ์ ๋๋ ์ฌ๋ผ์ด์ค ๋ฒ์์ ์์ ๊ฐ์์ ํ ๋นํ ์์ ๊ฐ์๊ฐ ์ ํํ ์ผ์นํด์ผ ํจ.
- ์๋ ๊ฒฝ์ฐ ์ค๋ฅ!
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[2:8:2] = ['a', 'b']
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a[2:8:2] = ['a', 'b']
ValueError: attempt to assign sequence of size 2 to extended slice of size 3
- ํํ, range, ๋ฌธ์์ด์ ์ฌ๋ผ์ด์ค ๋ฒ์๋ฅผ ์ง์ ํด๋ ์์๋ฅผ ํ ๋นํ ์ ์์.
| del ๋ก ์ฌ๋ผ์ด์ค ์ญ์ ํ๊ธฐ
- del ์ํ์ค๊ฐ์ฒด[์์์ธ๋ฑ์ค : ๋์ธ๋ฑ์ค]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> del a[2:5] # ์ธ๋ฑ์ค 2๋ถํฐ 4๊น์ง ์์๋ฅผ ์ญ์
>>> a
[0, 10, 50, 60, 70, 80, 90]
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> del a[2:8:2] # ์ธ๋ฑ์ค 2๋ถํฐ 2์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ธ๋ฑ์ค 6๊น์ง ์ญ์
>>> a
[0, 10, 30, 50, 70, 80, 90]
- ํํ, range, ๋ฌธ์์ด์ del๋ก ์ฌ๋ผ์ด์ค๋ฅผ ์ญ์ ํ ์ ์์.