2024-04-20 05:05:48 发布
网友
我想从一个一次输出一个元素的列表中定义一个生成器,然后以一种适当的方式使用这个生成器对象。在
a = ["Hello", "world", "!"] b = (x for x in a) c = next(b, None) while c != None: print c, c = next(b, None)
这里的while方法有什么错误或可以改进的吗?有没有办法避免在循环之前分配“c”?在
while
谢谢!在
为什么要使用while循环?在Python中,for循环绝对是为此而设计的:
for
a = ["Hello", "world", "!"] b = (x for x in a) for c in b: print c,
如果您因为任何原因而被困在while实现中,那么您当前的实现可能是您能做的最好的,但是它有点笨拙,您不认为吗?在
澄清:您的意思是生成器表达式而不是生成器后者是一个函数定义,至少包含一个yield语句/表达式。在
yield
同意前面的海报。。。几乎所有的事情都应该使用for循环。我很少使用while循环,这些循环被降级到运行无限循环的简单计数器或服务器上。:-)
您也可以将genexp放在与for循环相同的行上。。。在
a = ["Hello", "world", "!"] for c in (x for x in a): print c,
…因为genexp不能被重用。然而,它看起来不那么可读。而且,这也违背了本练习的目的。为什么不迭代a本身呢?在
你已经用光了内存去做这个列表;为什么要创建一个genexp而不是nec呢?在
为什么要使用
while
循环?在Python中,for
循环绝对是为此而设计的:如果您因为任何原因而被困在
while
实现中,那么您当前的实现可能是您能做的最好的,但是它有点笨拙,您不认为吗?在澄清:您的意思是生成器表达式而不是生成器后者是一个函数定义,至少包含一个
yield
语句/表达式。在同意前面的海报。。。几乎所有的事情都应该使用
for
循环。我很少使用while
循环,这些循环被降级到运行无限循环的简单计数器或服务器上。:-)您也可以将genexp放在与
for
循环相同的行上。。。在…因为genexp不能被重用。然而,它看起来不那么可读。而且,这也违背了本练习的目的。为什么不迭代a本身呢?在
^{pr2}$你已经用光了内存去做这个列表;为什么要创建一个genexp而不是nec呢?在
相关问题 更多 >
编程相关推荐