我是一个非常新手的程序员。我正在尝试使用 combinations
itertools
中的工具模块。所以我尝试:
from itertools import *
print combinations('12345', 3)
但不是预期的 ('123', '124', '125', [...])
我得到 <itertools.combinations object at [pointer]>
.我很困惑,因为在其他模块中调用方法返回预期的结果,例如:
import random
print random.randrange(10)
>>> 9
我对 itertools 模块做错了什么?
最佳答案
没有。结果是应该的。你显然没有考虑的是结果是一个迭代器,而不是一个完全评估的结果列表/元组。您看到的输出是该对象的 repr()
(它不返回一个字符串)。您可以通过将前者传递给 list
构造函数将前者转换为后者:
import itertools
print list(itertools.combinations('12345', 3))
但是当您不需要它并且您只是迭代这些值时,它不会同时存储所有结果,从而节省了大量内存。它还允许通过不消耗整个迭代器来避免工作(例如,找到满足某些条件的第一个组合然后返回)。
关于Python:调用方法返回 <[object] at [pointer]> 而不是 object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386776/