gpt4 book ai didi

python - 每次调用 next() 时如何用 python 返回多行?

转载 作者:太空狗 更新时间:2023-10-30 02:25:09 26 4
gpt4 key购买 nike

你好我是python初学者,有一个简单的问题。我被要求编写一个生成器来遍历一个 txt 文件,文件中的每一行都是一个点的 3 个坐标 (x,y,z)如何在每次调用 next() 时返回 5 个点(5 行)?

这是我的代码,我每次只能生成一行非常感谢!

import itertools

def gen_points(name):
f=open(name)
for l in f:
clean_string=l.rstrip()
x,y,z=clean_string.split()
x= float(x)
y= float(y)
z= float(z)
yield x,y,z
f.close()

file_name=r"D:\master ppt\Spatial Analysis\data\22.txt"
a=gen_points(file_name)
g=itertools.cycle(a)

print(next(g))

最佳答案

等到你的三元组列表中有五个项目,然后 yield 那个:

def gen_points(name):
with open(name) as f:
five_items = []
for l in f:
five_items.append(tuple(map(float,l.split())))
if len(five_items) == 5:
yield five_items
# create another empty object
five_items = []
if five_items:
yield five_items

如果元素的数量不能被 5 整除,则如果不为空,也会在循环结束时 yield 以避免丢失最后的元素。

旁白:clean_string=l.rstrip() 没用,因为 split 已经处理了换行等等。

关于python - 每次调用 next() 时如何用 python 返回多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50176304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com