- ๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ?
- ๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ 1) IF๋ฌธ (ํํฐ๋ง)
- ๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ 2) ์ค์ฒฉ๋ฐ๋ณต๋ฌธ
- ๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ 3) ์ด์ฐจ์ ๋ฆฌ์คํธ (Nested List Comprehension)
- โ +) ๋ฆฌ์คํธ ์ปดํ๋ฆฌ์ ํ์ฉ
๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ?
๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ด๋ ๋จ์ํ๊ฒ, ์ข ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋ค.
0๋ถํฐ 9๊น์ง์ ์ซ์๊ฐ ๋์ด๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค๊ณ ํ ๋, ์ผ๋ฐ์ ์ธ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ ๋ฆฌ์คํธ์ ์ซ์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๋ฉด ๋ค์์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
result = []
for i in range(10):
result.append(i)
์ฌ๊ธฐ์ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๋ฉด ๋จ ํ์ค๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
result = [x for x in range(10)]
์๊ฒ์ด ๋ฐ์๋ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ด๋ค-!
๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ 1) IF๋ฌธ (ํํฐ๋ง)
result = [i for i in range(10) if i % 2 == 0]
์์์ ์์ฑํ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ฝ๋์ if๋ฌธ์ ์ถ๊ฐํ์ฌ ๋ฆฌ์คํธ์ ๋ค์ด๊ฐ๋ ๊ฐ์ ํํฐ๋งํ ์ ์๋ค.
result = [i if i % 2 == 0 else 10 for i in range(10)]
else๋ฌธ๊น์ง ์ฌ์ฉํ ๊ฑฐ๋ผ๋ฉด ์ด๋ ๊ฒ if-else๋ฌธ์ for๋ฌธ ์์ ์์ฑํด์ผ ํ๋ค.
๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ 2) ์ค์ฒฉ๋ฐ๋ณต๋ฌธ
>>> lst_1 = ['a1', 'a2', 'a3']
>>> lst_2 = ['b1', 'b2', 'b3']
>>> [i + j for i in lst_1 for j in lst_2]
['a1b1', 'a1b2', 'a1b3', 'a2b1', 'a2b2', 'a2b3', 'a3b1', 'a3b2', 'a3b3']
๐ก ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ 3) ์ด์ฐจ์ ๋ฆฌ์คํธ (Nested List Comprehension)
์ด์ฐจ์ ๋ฆฌ์คํธ๋ ํ๋์ ์ ๋ณด๋ฅผ row ๋จ์๋ก ์ ์ฅํ๋ค. ๋ฐ๊ฐ์ ๋๊ดํธ๋ฅผ ํ๋ ๋ ์ฌ์ฉํด์ผ ํ๋ค.
>>> lst_1 = ['a1', 'a2', 'a3']
>>> lst_2 = ['b1', 'b2', 'b3']
>>> [ [ i + j for i in lst_1 ] for j in lst_2 ]
[['a1b1', 'a2b1', 'a3b1'], ['a1b2', 'a2b2', 'a3b2'], ['a1b3', 'a2b3', 'a3b3']]
์์ ๋ณธ ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ๊ณผ๋ ๋ค๋ฅด๊ฒ ๋ค์ for๋ฌธ์ด ๋ ๋จผ์ ์คํ๋๋ค. ์์ ์ฝ๋์์๋ j๊ฐ ๋จผ์ 'b1'์ผ๋ก ๊ณ ์ ๋๊ณ lst_1์ด ๋๋ค.
[ [ row[i] for row in matrix ] for i in range(4) ]
โ +) ๋ฆฌ์คํธ ์ปดํ๋ฆฌ์ ํ์ฉ
- ๊ฐ ์์์ ํจ์ ์ผ๊ด ์ ์ฉ
>>> vec = [-4, -2, 0, 2 ,4]
>>> [abs(x) for x in vec]
[4, 2, 0, 2, 4]
- ๊ฐ ์์์ method ์ผ๊ด ์ ์ฉ
>>> fruits = [' banana', 'loganberry ', 'passion fruit ']
>>> [fruit.strip() for fruit in fruits]
['banana', 'loganberry', 'passion fruit']
- tuple ์๋ฃํ์ ์์๋ก ๊ฐ๋ ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
>>> [ (x, x**2) for x in range(6) ]
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
>>> [ x, x**2 for x in range(6) ]
File "<stdin>", line 1
[ x, x**2 for x in range(6) ]
^
SyntaxError: invalid syntax
- ์ ์น ํ๋ ฌ ๋ง๋ค๊ธฐ
>>> matrix = [[1, 2], [3,4], [5,6], [7,8]]
>>> [ [row[i] for row in matrix] for i in range(2) ]
[[1, 3, 5, 7], [2, 4, 6, 8]]
+) ์ฐธ๊ณ
IT CookBook, ๋ฐ์ดํฐ ๊ณผํ์ ์ํ ํ์ด์ฌ ํ๋ก๊ทธ๋๋ฐ
ํ๋๋ํ๊ต ๊ฒฝ์ํโข์ ์ฐํ ํ์ฌ, ํฌํญ๊ณต๊ณผ๋ํ๊ต ์ฐ์ ๊ฒฝ์๊ณตํ๊ณผ Technology Intelligence ๋ฐ์ฌ ํ์๋ฅผ ๋ฐ์๋ค. ์ผ์ฑ์ ์ ์ข ํฉ๊ธฐ์ ์์ CTO ์ ๋ตํ์์ ๊ธฐ์ ์ ๋ต๊ณผ R&D ์ ๋ณด์์คํ ๊ฐ์ ์ ๋ฌด๋ฅผ ๋งก์
books.google.co.jp
5. Data Structures โ Python 3.10.0 documentation
5. Data Structures This chapter describes some things youโve learned about already in more detail, and adds some new things as well. 5.1. More on Lists The list data type has some more methods. Here are all of the methods of list objects: list.append(x)
docs.python.org
๋๊ธ