python
python 기초 9 (리스트 내 for 문/ List Comprehension)
멈머이
2023. 11. 9. 00:53
728x90
1) 조건이 1개일 때
*기존에 쓰던 형태
ls = list()
for i in range(1,5):
ls.append(i)
print(ls)
*리스트 내 for 문
ls = [i for i in range(1,5)]
print(ls)
결과 : [1, 2, 3, 4]
위와 아래의 결과가 같지만, 코드를 간결하게 쓸 수 있다.
ls = list()
for i in range(1,5):
if i % 2 ==0:
ls.append(i*4)
print(ls)
ls = [i*4 for i in range(1,5) if i%2 == 0]
print(ls)
결과 : [8, 16]
순서 헷갈리지 않도록 주의!!
2) 조건이 2개 이상일 때
[표현식 for 항목1 in 반복가능객체 if 조건문1 for 항목2 in 반복가능객체 if 조건문2 ...]
구구단을 만드는 예시.
gugu = list()
gugu = [i*j for i in range(2,10) for j in range(1,10)]
print(gugu)
결과 : [2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]
3) 딕셔너리 내 for 문
names = ['Merry', 'John', 'chris']
num = [1, 2 ,3]
dic = {names[i]:num[i] for i in range(len(names))}
print(dic)
dic1 = dict()
for i in range(len(names)):
dic1[names[i]] = num[i]
print(dic1)
dic = {k:v for k, v in zip(names, num)}
print(dic)
dic1 = dict()
for k,v in list(zip(names, num)):
dic1[k] = v
print(dic1)
결과 : {'Merry': 1, 'John': 2, 'chris': 3}
네 가지 모두 결과는 같다.
for문 내부에서 연산도 가능하다.
num = [-20, -10, 0, 10, 20]
[x%2 for x in num]
결과 : [0, 0, 0, 0, 0]
num = [-20, -10, 0, 10, 20]
[str(x) for x in num]
결과 : [-20, -10, 0, 10, 20]
num = [-20, -10, 0, 10, 20]
[x**2 for x in num]
결과 : [400, 100, 0, 100, 400]
728x90