목록 분석의 출현은 Python에게 절대적으로 혁명적인 변화입니다.우리는 매우 간단한 목록 분석 공식을 통해 특정 규칙에 맞는 목록 구성을 완료하거나 함수 프로그래밍에서 map(), filter()와 같은 함수의 역할을 대체할 수 있습니다(함수 프로그래밍은 나중에 요약합니다).
먼저 목록 해석의 구문을 살펴보겠습니다:[expr foriter_val in iterable]
간단히 말해서, 반복 가능한 객체의 각 요소에 대해 식을 통해 요소에 작용하여 계산 결과를 얻은 다음 for 루프를 통해 반복 가능한 객체의 각 요소를 순회하고 작용 후 결과를 목록을 구성하는 것입니다.이 효과의 결과는 이전 요소에서 계산된 새로운 개체이거나 원래 요소일 수 있습니다.
컨셉 자체는 딱히 할 말이 없는데 너무 직관적이지 않아요.그래서 나는 리스트 해석이 어떻게 사용되는지 아래의 예를 들어 설명하겠습니다.
1. 시퀀스의 각 값을 순서대로 계산합니다.
순서를 하나 주려면, 이 순서 중의 매 수의 제곱을 얻어야 합니다
a = [1, 2, 3, 4, 5]
result = [x ** 2 for x in a] # x是元素,列表a是可迭代对象
print(result) # >>> [1, 4, 9, 16, 25]
물론 반복 가능한 대상이 어떤 법칙에 부합한다면 range() 표현으로 나타낼 수도 있습니다
print([x + 1 for x in range(10)]) # >>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
표현은 연산자를 통해 직접 쓸 수 있을 뿐만 아니라, 이미 정의된 함수일 수도 있습니다
def fun(num):
return 2 * num - 1
print([fun(x) for x in range(3, 10)]) # >>> [5, 7, 9, 11, 13, 15, 17]
2. 체질서열입니다
사실 순서 중의 각 원소에 대한 계산이기도 하지만, 단지 선별하는 기능을 하는 것입니다.
예를 들어, 이제 2~30개의 모든 소수를 선별해서 리스트를 만들고 싶습니다
import math
# 소성 판단 함수를 정의합니다
def isPrime(num):
k = int(math.sqrt(num))
for i in range(2, k + 1):
if num % i == 0:
return False
return True
print([x for x in range(2, 31) if isPrime(x)]) # >>> [2, 3, 5, 7, 11, 13, 19, 23, 29]
3. 여러 쌍을 만듭니다
이제 할 일은 다음과 같은 형태로 2×32×3개의 숫자 쌍을 구성하는 것입니다.
(1,1),(1,2),(1,3),(2,1),(2,2),(2,3)(1,1),(1,2),(1,3),(2,1),(2,2),(2,3)
그러면 리스트 해석식을 통해서 이렇게 생성할 수 있습니다
[(x + 1, y + 1) for x in range(2) for y in range(3)]
4. 통계 문자입니다
물론 목록 해석을 통해 문자열의 문자 수를 계산할 수도 있습니다
s = "I wrote Python"
print(sum([len(i) for i in s.split()])) # >>> 12
이 예에서 먼저 s.split( )을 통해 시퀀스를 구성하고 시퀀스의 각 요소는 문자열 s의 각 단어이며 [len(i) for ins.split( )]을 통해 이러한 단어의 길이로 구성된 목록을 생성하고 마지막으로 sum( ) 함수를 통해 합쳐서 원래 여러 줄의 코드가 필요했던 작업, 목록 해석을 통해 간단한 코드 1줄만 필요함을 알 수 있습니다.
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
python에서 strip () 함수에 대한 자세한 설명입니다 (0) | 2023.02.04 |
---|---|
Python-- 문자열입니다 (0) | 2023.01.11 |
【이중 y축 그래프】파이썬은 이중 y축 그래프를 만듭니다 (0) | 2023.01.11 |
파이썬 그림 - 점을 표시하고 점선을 그립니다 (0) | 2023.01.11 |
파이썬 그림 함수 (0) | 2023.01.11 |