[PYTHON] 파이썬에서 생성자와 for 루프
PYTHON파이썬에서 생성자와 for 루프
그래서 나는 이와 같이 보이는 생성 함수를 가지고 있습니다.
def generator():
while True:
for x in range(3):
for j in range(5):
yield x
이 함수를로드하고 "다음"을 여러 번 호출하면 값을 산출 할 것으로 기대합니다.
0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 0 0 0 0 0 ...
하지만 대신에 항상 0을 얻습니다. 왜 그런가요?
>>> execfile("test.py")
>>> generator
<function generator at 0x10b6121b8>
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
해결법
-
==============================
1.generator ()는 새로운 생성자 객체를 초기화합니다.
generator ()는 새로운 생성자 객체를 초기화합니다.
In [4]: generator() is generator() # Creating 2 separate objects Out[4]: False
그런 다음 generator (). next ()가 새로 생성 된 생성기 객체의 첫 번째 값을 가져옵니다 (사용자의 경우 0).
발전기를 한 번 호출해야합니다.
In [5]: gen = generator() # Storing new generator object, will reuse it In [6]: [gen.next() for _ in range(6)] # Get first 6 values for demonstration purposes Out[6]: [0, 0, 0, 0, 0, 1]
참고 : generator.next가 Python 3 (PEP 3114)에서 제거되었습니다. 대신 다음 함수를 사용하십시오.
In [7]: next(gen) Out[7]: 1
-
==============================
2.생성기를 호출 할 때마다 새 생성기 객체를 만듭니다.
생성기를 호출 할 때마다 새 생성기 객체를 만듭니다.
generator().next() # 1st item in 1st generator generator().next() # 1st item in 2nd generator
하나의 발전기를 생성하고 다음 항목에 대해 다음 호출 :
g = generator() g.next() # 1st item in 1st generator g.next() # 2nd item in 1st generator
-
==============================
3.내가 코멘트에 글을 적었을 때, 당신이 실수로 보는 질문과 병행하여 이것을 보았다고 생각한다.
내가 코멘트에 글을 적었을 때, 당신이 실수로 보는 질문과 병행하여 이것을 보았다고 생각한다.
with open('my_file.txt', 'r') as f: print(f.readline()) # `readline` simply reads a single line with open('my_file.txt', 'r') as f: print(f.readline()) with open('my_file.txt', 'r') as f: print(f.readline()) with open('my_file.txt', 'r') as f: print(f.readline())
매번 새로운 생성기 객체를 만드는 대신, 한번 생성 한 다음 고갈 될 때까지 사용해야합니다.
mygen = generator() mygen.next() mygen.next() ... etc
from https://stackoverflow.com/questions/29570348/generators-and-for-loops-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 객체에 대한 모든 참조를 찾습니다. (0) | 2018.11.22 |
---|---|
[PYTHON] Python Math - TypeError : 'NoneType'객체는 subscriptable이 아닙니다. (0) | 2018.11.22 |
[PYTHON] pandas to_csv 출력 인용문 (0) | 2018.11.22 |
[PYTHON] Python Argparse 조건부 필수 인수 (0) | 2018.11.22 |
[PYTHON] 위치 데이터에 파이썬에서 칼만 필터를 사용하는 방법? (0) | 2018.11.22 |