본문 바로가기
Python_Wiki/Python_Syntax

list / dict comprehension (for문)

by yj-data 2025. 7. 11.

이건 혁신이야...!!!!!! 파이썬 배우다 간만에 도파민 대폭발😍

 

list comprehension: 리스트 안에 for문을 포함하여 한 줄로 편하게 코드를 작성할 수 있게 하는 문법.

#[표현식 for 항목 in 반복가능객체 if 조건문]

#1
ls = []
for i in range(1, 5):
    ls.append(i)
print(ls)

#1-1
ls = [i for i in range(1,5)]
print(ls)

#2
ls = []
for i in range(1, 5):
    if i % 2 == 0:
        ls.append(i * 4)
print(ls)

#2-1
ls = [i * 4 for i in range(1,5) if i % 2 == 0]
print(ls)

#for문 중첩
#3
gugudan = []
for i in range(2, 10):
    for j in range(1, 10):
        gugudan.append(i*j)
print(gugudan)

#3-1
gugudan = [i*j for i in range(2,10) for j in range(1,10)]
print(gugudan)

 

Dict comprehension: list comprehension과 마찬가지, 딕셔너리도 for문을 간편하게 사용

names = ['Merry','John','Chris']
num = [1,2,3]

#1
dic1 = {}
for i in range(len(names)):
    dic1[names[i]] = num[i]
dic1

#1-1
dic = {names[i]:num[i] for i in range(len(names))}
print(dic)

#2
dic1 = {}
for k, v in list(zip(names, num)):
    dic1[k] = v*5
dic1

#2-1
dic = {k:v*5 for k, v in zip(names, num)}
print(dic)

#3
dic1 = {}
for k, v in list(zip(names, num)):
    if v % 2 == 1:
        dic1[k] = v*5
dic1

#3-1
dic = {k:v*5 for k, v in zip(names, num) if v % 2 == 1}
print(dic)

#4. instead of zip, how to use with an actual dict type data
id_name = {1: 'Merry', 2: 'John', 3: 'Chris'}
dic1 = {v:k for k,v in id_name.items()}
dic1 #{'Merry': 1, 'John': 2, 'Chris': 3}

#5 counting
x = ['a','a','b','b','b','c','c','c','c']
dic = {i : x.count(i) for i in set(x)}
dic #{'a': 2, 'c': 4, 'b': 3}
sorted(dic.items(), key=lambda x:x[1], reverse=True) #숫자 큰 순서대로 정렬하기 #[('c', 4), ('b', 3), ('a', 2)]