【发布时间】:2011-01-30 16:49:47
【问题描述】:
假设我有一个不希望返回但希望从中产生值的列表。最pythonic的方法是什么?
这就是我的意思。由于一些非惰性计算,我计算了列表['a', 'b', 'c', 'd'],但是我在项目中的代码使用了惰性计算,所以我想从我的函数中产生值而不是返回整个列表。
我目前是这样写的:
my_list = ['a', 'b', 'c', 'd']
for item in my_list:
yield item
但这对我来说并不像pythonic。
【问题讨论】:
-
为什么需要这样做,您可以使用“for x in container”,其中容器是列表或容器是迭代器......无论类型如何,语法都不会改变,所以为什么它是列表还是迭代器很重要?您仍然必须坚持列表才能从中获得收益,因此只需传递列表即可。
-
旁注:加上“List”,由于前导大写,很多人会认为它是一个类名(参见 PEP 8)。您可以使用“list_”或“my_list”等。
-
EOL,感谢您的评论。谢谢。
-
一个可迭代对象可以被认为是它自己的生成器。也就是说,如果我能写出
for i in my_iterable:,它会像发电机一样行走,像发电机一样嘎嘎作响。