공부

[python] list 안에서 for문과 if 조건문 이용하기 (list comprehension)

snowfield 2021. 1. 10. 16:06

파이썬은 다른 언어와 다르게 list 내에서 for문과 if 조건문을 한번에 사용할 수 있다.

이런걸 리스트 컴프리핸션(list comprehension)이라고 한다. 

이를 이용하면 코드의 길이를 축약할 수 있다는 장점이 있다.

자세한 사용방법은 밑에 설명하도록 할 것이다.


  • list와 for문만을 이용한 예시
    1. for문 하나만 있을 때의 작성 형식 :  [식  for 변수  in 리스트] 또는 list(식 for 변수 in 리스트)

    2. for문 여러개 있을 때의 작성 형식 :  [식 for 변수1 in 리스트1 for 변수2 in 리스트2] 또는 list(식 for 변수1 in 리스트1 for 변수2 in 리스트2)

 

 

 

간단하게 list와 for문만을 이용해서 코드를 짜보도록 할 것이다.

a = [i for i in range(5)]
print(a)

 

 

이와 같은 코드를 출력하게 되면 다음과 같은 출력이 형성되게 된다.

출력화면

 

 

그러면 for문을 하나만 사용할 수 있는 것일까?

아니다. 2개도 사용할 수 있고 여러개 사용할 수 있다.

밑은 2개의 for문을 이용한 예시 코드이다. 구구단 코드는 단 한줄로 끝날 수가 있다.

a = [i*j for i in range(1,10) for j in range(1,10)]
print(a)

 

 

 


  • list와 for문, if 조건문을 이용한 예시
    1. for문과 if 조건문이 한개일 때 작성 형식 : [식 for 변수 in 리스트 if 조건식]

    2. for문과 if 조건문이 여러개일 때 작성 형식 : [식 for 변수1 in 리스트1 if 조건식1 ... for 변수N in 리스트N if 조건식N]

  • list와 for문, if .. else .. 조건문을 이용한 예시
    1. for문, if .. else .. 조건문 작성 형식 : [식1 if 조건식 else 식2 for 변수 in 리스트 ]

다음 코드는 list와 for문, if.. else.. 조건문을 이용한 코드이다.

1~10사이의 수에 있어서 2의 배수일 때는 2의 제곱을 해주고 그렇지 않은 경우에는 3승을 해주는 코드이다.

a = [n**2 if n%2 == 0 else n**3 for n in range(1, 11)]
print(a)

이렇게 되면 출력 화면은 다음과 같다.

출력화면

 

 

 

출처 : dojang.io/mod/page/view.php?id=2285