0
저는 파이썬의 생성자와 약간 혼동 스러우며 for
루프를 사용하여 대 next()
을 사용합니다.파이썬 생성기 for..in vs next()
각 줄에 자동차 정보 (예 : a.
으로 시작하는 모델 이름의 필수 줄 다음에 여러 개의 필수가 아닌 줄이 있음)가 포함 된 텍스트 파일을 구문 분석해야합니다. 그래서 저는 파이썬적인 방식으로 자동차를 반복하고 싶습니다.
I는 다음 코드 비트 가지고
lines = """a. car1 model
b. car1 price
c. car1 details
a. car2 model
b. car2 price
a. car3 model
b. car3 price
c. car3 details
d. car3 comments
"""
def iter_cars(lineit):
res = []
for line in lineit:
if line.startswith('a') and res:
yield res
res = []
res.append(line)
yield res
# print the cars with next...,
lineit = iter(lines.split('\n'))
print(next(iter_cars(lineit)))
print(next(iter_cars(lineit)))
print(next(iter_cars(lineit)))
# reset the iterator and print the cars with for
lineit = iter(lines.split('\n'))
for car in iter_cars(lineit):
print(car)
출력은 :
# using next()
a. car1 model
b. car1 price
c. car1 details
b. car2 price
b. car3 price
c. car3 details
d. car3 comments
# using for..in
a. car1 model
b. car1 price
c. car1 details
a. car2 model
b. car2 price
a. car3 model
b. car3 price
c. car3 details
d. car3 comments
이유는 두 개의 출력이 다르다?
next()
가 첫 번째 이후 각 차량의
a.
라인을 건너 뛰는 이유는 무엇입니까?
next()
을 사용하면
for..in
을 사용할 때와 동일한 결과가 나오도록 반복기를 다시 작성할 수 있습니까?
그게 전부입니다! 너무 바보 같아. 고마워요! –
문제 없습니다, 아름다운 하루 되세요! – jalanga
감사합니다. :) –