Phi*_*ham 32 python list generator
我知道可以将生成器转换为"低级别"(例如list(i for i in xrange(10)))的列表,但是可以在不先遍历列表的情况下进行反向(例如.(i for i in range(10)))吗?
编辑:删除这个词是cast为了清楚我正在努力实现的目标.
编辑2:实际上,我认为我可能在基础层面误解了发电机.这将教会我在早晨喝咖啡之前不要发布SO问题!
Don*_*Don 14
您可以使用内置函数list(...)和列表中的迭代器通过使用以下内容从迭代器中获取列表iter(...):
mylist = list(myiterator)
myiterator = iter(mylist)
Run Code Online (Sandbox Code Playgroud)
实际上,您的语法是一个迭代器:
iter_10 = (i for i in range(10))
Run Code Online (Sandbox Code Playgroud)
而不是使用[...]哪个给出一个列表.
看看这个答案隐藏Python的功能
实际上,列表可能拥有迭代器接口:
list_iter = list.__iter__() # or iter(list), returns list iterator
list_iter.__next__() # list_iter.next() for python 2.x
Run Code Online (Sandbox Code Playgroud)
所以,
lst_iter = iter(lst)
Run Code Online (Sandbox Code Playgroud)
诀窍.
虽然使用理解并用它制作发电机更有意义:例如
lst_iter_gt_10 = (item for item in lst if item > 10)
Run Code Online (Sandbox Code Playgroud)