๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 20
์์ฃผ ์ค๋๋ง์ ๊ธ์ ์ฐ๋๋ฐ์. ์ด๋ฒ ๊ธ๋ถํฐ ๋น๋ถ๊ฐ์ python ๋ฌธ๋ฒ์์ฒด์ ์ง์คํด์ ๋ช๊ฐ์ง๋ฅผ ์ค๋ช ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํนํ ์ ์ฒ๋ผ ์ค๋์ ์ ํ๋ก๊ทธ๋จ ์ง๋๋ฒ์ ๋ฐฐ์ฐ๊ณ MATLAB๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ย ๋๋ถ๋ถ์ ์๊ฐ์ ๋ณด๋ธ ์ฌ๋์๊ฒ ์ฝ๊ฐ์ ์์ํ ํ๋ก๊ทธ๋จ ๋ฌธ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ ์ฒซ๋ฒ์งธ๊ฐ list์ ๋๋ค.
์ฐธ๊ณ ๋ก ์ด ๋ด์ฉ์ ์๋ ๋งํฌ์ ์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ต๋๋ค:
http://www.python-course.eu/python3_list_comprehension.php
๋ค์๊ณผ ๊ฐ์ด โ[ ]โ์์ ๋ด์ฉ๋ฌผ์ ๋ฃ์ผ๋ฉด list๊ฐ ๋ง๋ค์ด ์ง๋๋ค.
>> ย a = [1, 2, โabcโ, [3,4,5]]
list์ ๊ฐ ๋ด์ฉ๋ฌผ์ ๋ฐฉ๊ธ ์์์ ๋ณด๋ฏ์ด ๋ฐ๋์ ๊ฐ์ ์๋ฃ ํํ์ผ ํ์๋ ์์ต๋๋ค. a[0] = 1์ด๊ณ a[2]=โabcโ์ด๊ณ a[3] = [3,4,5]์ ๋๋ค. ์ฆ,
>> type(a)
list
>> type(a[0])
int
>> type(a[2])
str
>> type(a[-1])
list
์ ๋๋ค.
์ด๋ฏธ ๋ง๋ค์ด์ง list๋ฅผ ์ด์ฉํด์ ์๋ก์ด list๋ฅผ ๋ง๋ค์๋ ์์ต๋๋ค. a์ ๊ฐ ํญ์ ์ ๊ณฑํ ๊ฐ์ ๊ฐ๋ list๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค๋ฉด
>> b = [ x**2 for x in a]
๋๋๋ฐ, ์ฌ๊ธฐ โfor x in aโ ์์ x๊ฐ a์ ์๋ ๊ฐ๊ฐ์ ๋ด์ฉ๋ฌผ๋ก ์์ฐจ์ ์ผ๋ก ๋์น๋ฉ๋๋ค. ์ฆ, x=a[0] -> x = a[1] -> x = a[2] ...
๊ทธ๋ฐ๋ฐ ์์ ๋ด์ฉ์ ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ํ๋ฉด a์๋ ์ ์๋ง ์๋ ๊ฒ์ด ์๋๊ณ ๋ฌธ์์ด๋ ์๊ณ , list๋ ์๋๋ฐ ์ด๊ฒ์ ์ ๊ณฑ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด
>> b = [x**2 for x in a[0:2]]
b ย = [1, 4] ๋๋๋ฐ a[0:2]๊ฐ a[0]๊ณผ a[1]๋ก ย x๊ฐ์ ์ ์๊ฐ 1๊ณผ 2๋ฅผ ๋๊ฒจ์ฃผ๋ฏ๋ก ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ์์ด ์คํ๋ฉ๋๋ค. ์ด๊ฒ์ ์ข ๋ ์๋์ผ๋ก ์ธ์ํด์ ์ ์์ผ๋๋ง ๋๊ฒจ์ฃผ๊ฒ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ๋ฉ๋๋ค.
>> b = [x**2 for x in a if type(x)==int]
์ด์ ๊ฐ์ด ํ๋ฉด x์ ์๋ฃํ์ด ์ ์์ผ๋๋ง x๊ฐ์ด x**2 ์ฐ์ฐ์ผ๋ก ๋๊ฒจ์ง๊ฒ ๋ฉ๋๋ค.
์ธ๊ฐ์ for-loop๋ฅผ ์กฐํฉํด์ ์ธ ์๋ ์์ต๋๋ค:
>>ย [(x,y,z) for x in range(1,31) for y in range(x,31) for z in range(y,31) if x**2 + y**2 == z**2]
์ด๋ ๊ฒ ํ๋ฉด 1๋ถํฐ 30๊น์ง ์๋ ๋ชจ๋ ์ ์์ ์กฐํฉ์์ ํผํ๊ณ ๋ผ์ค์ ์ ๋ฆฌ๋ฅผ ๋ง์กฑํ๋ ์ธ๊ฐ์ ์ ์์์ด ์์ฑ๋ฉ๋๋ค.
๋ค์ํ์๋ list์ ๋ฐ์ ํ ๊ด๋ จ์ด ์๋ generator์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.














