Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬 목록 이해?

<시간/>

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 루프보다 훨씬 빠릅니다. 가독성만으로는 가능한 한 많이 사용해야 하는 설득력이 없는 경우 속도가 있어야 합니다.