코딩헤딩

python 기초 9 (리스트 내 for 문/ List Comprehension) 본문

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