python 생성기에서 주의해야 할 작은 문제
def generator_test1():
# 0...9 generator
x = (i for i in range(10))
# 5..9 generator
x_filter = filter(lambda y: y >= 5, x)
# first use the x
L = list(x)
print("L, x", L)
# then use x_filter
l = list(x_filter)
print("l, x_filter", l)
if __name__ == "__main__":
generator_test1()
출력 결과:L, x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l, x_filter []
위의 코드에서 x_filter는 생성기 x를 기반으로 구축된 생성기이지만 x가 x_에 있기 때문에filter 사용하기 전에 먼저 사용되었기 때문에 x_filter를 할 때 x의 값을 가져옵니다. 이때 x는 이미 다 썼습니다. 결국 x_filter가 변환된 목록은 비어 있습니다.
def generator_test2():
x = (i for i in range(10))
for i in range(10):
x = (j + i for j in x)
L = list(x)
print("L, x", L)
if __name__ == "__main__":
generator_test2()
출력 결과:L, x [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
상기 코드에서 매번 순환은 원래의 생성기를 바탕으로 새로운 생성기를 구축한다. 사용하지 않았기 때문에 생성기 x의 i는 값을 부여하지 않았다.뒤에 목록으로 바뀔 때 i의 값을 얻습니다. 이때 i가 9이기 때문에 모든 생성기 x의 i는 9이고 원시 x는 0에서 9의 생성기입니다. 다음 10개의 생성기는 각각 원시 값에 9를 더하여 모든 값이 90이 됩니다.다음은 이 예제의 변체입니다.
def generator_test3():
x = (i for i in range(10))
for i in range(10):
x = (j + i for j in x)
i = 20
L = list(x)
print("L, x", L)
if __name__ == "__main__":
generator_test3()
출력 결과:L, x [200, 201, 202, 203, 204, 205, 206, 207, 208, 209]
이상은python 생성기에서 주의해야 할 작은 문제에 대한 상세한 내용입니다. 더 많은python 생성기에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.