리스트 컴프리헨션은 기존 리스트를 기반으로 새로운 리스트를 만들어내는 구문이다.
기본 구문: [ <표현식> for <변수명> in <시퀀스> if <조건> ]
+) if else가 섞인 리스트 컴프리헨션의 순서는
[(표현식) if <조건> else <표현식> for <변수명> in <시퀀스>]
사용 예제: 홀수인 경우 제곱하여 출력하는 리스트 컴프리헨션
[n*n for n in range(0,10) if n%2 ==1 ]
[1,9,25,49,81]
>> a = [1,2,3]
>> b = [2*x for x in a]
>> b
[2,4,6]
>> a = ['abc','def']
>> b = [name.upper() for name in a]
>> b
['ABC', 'DEF']
>>a=[1,-5,4,2,-2,10]
>>b=[2*x for x in a if x>0]
>>b
[2,8,4,20]
a=[s for s in stocks if s['price']>100]
a=[s['name'] for s in stocks]
a ={}
for key, val in original.itmes():
a[key]= val
위의 코드를 다음과 같이 한줄로 줄여준다
a = {key:value for key,value in original.items()}
a= [['lukas',25],['jenni',26],['tom',24]]
b={ key, value for key, value in a}
b
{'lukas':25, 'jenni':26, 'tom':24}
li=[]
for i in range(2):
for j in range(3):
li.append((i,j))
li
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
이랬던 코드가 이렇게! i랑 j를 괄호로 묶어주는 걸 잊지말자
[(i,j) for i in range(2) for j in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
[i*10 for i in range(5)]
[0, 10, 20, 30, 40]
수식 뿐만 아니라 함수도 적용가능
def test(x):
x = str(x)+'ab'
return x
[test(i) for i in range(5)]