Python은 한 목록을 다른 목록에서 파생시키기 위한 간결한 구문을 제공합니다. 이러한 표현식을 목록 이해라고 합니다. 목록 이해는 Python에서 가장 강력한 도구 중 하나입니다. Python의 목록 이해는 함수형 프로그래밍 개념에 대한 언어 지원의 한 예입니다.
Python 목록 이해는 항목 목록에 함수 또는 필터를 적용하는 매우 쉬운 방법입니다. 목록 이해는 올바르게 사용하면 매우 유용하지만 주의하지 않으면 읽을 수 없습니다.
구문
목록 이해의 일반적인 구문은 -
[expr for element in iterable if condition]
위는 -
와 동일합니다.for element in iterable: if condition: expr
예를 들어 목록에 있는 각 숫자의 제곱을 계산하려고 한다고 가정해 보겠습니다. 계산을 위한 표현식과 반복할 입력 시퀀스를 제공하여 이를 수행할 수 있습니다.
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> squares = [x**2 for x in lst] >>> print(squares) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
목록 이해와 For 루프
#USING FOR LOOP evens = [] for i in range(10): if i % 2 == 0: evens. append(i) print(evens)
출력
[0, 2, 4, 6, 8]
위의 코드를 작성하는 더 빠르고 좋은 방법은 목록 이해를 사용하는 것입니다.
>>> [i for i in range(10) if i % 2 ==0] [0, 2, 4, 6, 8]
보시다시피 목록 이해를 사용하여 코드를 작성하는 것이 훨씬 더 효율적이고 더 짧고 더 적은 요소를 포함합니다.
목록 이해 대 람다 함수
단일 인수 함수를 적용하지 않는 한 목록 이해는 간단한 경우에 내장된 지도 함수보다 명확합니다. 지도는 계산을 위해 람다 함수를 생성해야 하므로 시각적으로 시끄럽습니다.
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> list(map(lambda x: x**2, lst)) [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
지도와 달리 목록 이해를 사용하면 입력 목록에서 항목을 쉽게 필터링하여 결과에서 해당 출력을 제거할 수 있습니다.
조건식이 있는 목록 이해
예를 들어, 2와 5로 나눌 수 있는 100보다 작은 숫자만 계산하려고 한다고 가정해 보겠습니다.
>>> lst = [x for x in range(100) if x % 2 == 0 if x % 5 == 0] >>> print(lst) [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
2로 나눌 수 있는 숫자의 제곱만 계산하려는 다른 예를 살펴보겠습니다. 여기에서는 루프 뒤에 있는 목록 이해에 조건식을 추가하여 이 작업을 수행합니다. −
>>> lst=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> even_squares = [x**2 for x in lst if x % 2 == 0] >>> print(even_squares) [4, 16, 36, 64, 100]
1에서 100 사이의 짝수를 계산합니다.
>>> # a list of even numbers between 1 and 100 evens = [i for i in range(1,100) if not i % 2] >>> print(evens) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
목록 이해는 수많은 항목을 반복할 때 for 루프보다 훨씬 빠릅니다. 가독성만으로는 가능한 한 많이 사용해야 하는 설득력이 없는 경우 속도가 있어야 합니다.