리스트 컴프리헨션 잘쓰기

HR.lee·2022년 2월 2일
0
post-custom-banner

리스트 컴프리헨션은 기존 리스트를 기반으로 새로운 리스트를 만들어내는 구문이다.

https://yiyj1030.tistory.com/87?category=470388

기본 구문: [ <표현식> 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']

for문과 if문을 활용한 필터링

>>a=[1,-5,4,2,-2,10]
>>b=[2*x for x in a if x>0]
>>b
[2,8,4,20]

db에 활용

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}

https://bio-info.tistory.com/28

이중 for문 사용하기

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)]
profile
It's an adventure time!
post-custom-banner

0개의 댓글