Develop/Python

[Python]list comprehension

dawonny 2021. 8. 5. 01:59
728x90
반응형

리스트의 각 원소들에 전부 2배씩 해주는 코드를 생각해보자.

기존 리스트에 있던 원소들을 모두 2배 해주면서 동시에 그걸 새로운 리스트에 append 해줄 수도 있지만

list comprehension 을 이용하면 선언과 동시에 for loop 으로 부터 나온 원소를 원하는 값으로 변경해줄 수 있다.

[(표현식) for (표현식에서 사용한 변수) in (변수 추출 조건) <조건문>]
arr = [1, 2, 3, 5]

new_arr = [elem * 2 for elem in arr]

print(new_arr)

>> [2, 4, 6, 10]

조건문을 포함하는 list comprehension

 

어떤 조건문을 만족하는 값만 리스트에 들어가도록 만들고 싶다면 

다음과 같이 작성해주자.

[(표현식) for (표현식에서 사용한 변수) in (변수 추출 조건) <조건문>]
list_ = [i ** 2 for i in range(1, 10) if i % 2 == 1]

변수가 두 개 이상인 list comprehension

 

list_ = [(i + j) for i in range(3) for j in range(3)]

만약에 이렇게 변수가 두개가 된다면?

다르게 표혀나면 다음과 같다.

list_ = []
for i in range(3):
    for j in range(3):
        list_.append(i + j)

두 변수를 다 움직이기는 힘드니 for 문 처럼 하나의 문자부터 움직이게 함.

결과는 다음과 같겠다.

[0, 1, 2, 1, 2, 3, 2, 3, 4]

참고 : CODE TREE

728x90
반응형