>>> import itertools
>>> n = [1,2,3,4]
>>> combObj = itertools.combinations(n,3)
>>>
>>> combObj
<itertools.combinations object at 0x00000000028C91D8>
>>>
>>> list(combObj)
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
>>>
>>> for i in list(combObj): #This prints nothing
... print(i)
...
如何迭代combObj?
如何转换[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
至[[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]]
要转换为列表列表,可以执行以下操作:
生成器很好,因为它们不占用太多内存。如果你经常使用它并且有内存,那么把它保存为元组而不是生成器。在
否则,每当我想使用生成器时,我通常会创建一个函数来返回它:
(您可以任意调用get_combObj())
一旦您迭代了一次
itertools.combinations
对象,它就已经用完了,您不能再次迭代它。在如果您需要重用它,正确的方法是像您所做的那样使它成为}。你需要做的就是给它一个名字(把它赋给一个变量),这样它就可以继续存在了。在
list
或{如果您只想在它上迭代一次,那么根本就不调用
^{pr2}$list
:旁注:命名对象实例/普通变量的标准方法是
comb_obj
,而不是combObj
。有关详细信息,请参见PEP-8。在要将内部的
tuple
转换为list
,请使用列表理解和list()
内置函数:相关问题 更多 >
编程相关推荐