Python:调用方法在[pointer]>而不是object返回<[object]

jay*_*ren 3 python import module python-2.x

我是一个非常新手的程序员.我正在尝试使用模块中的combinations工具itertools.所以我尝试:

from itertools import *
print combinations('12345', 3)
Run Code Online (Sandbox Code Playgroud)

而不是('123', '124', '125', [...])我得到的预期<itertools.combinations object at [pointer]>.我很困惑,因为在其他模块中调用方法会返回预期的结果,例如:

import random
print random.randrange(10)
>>> 9
Run Code Online (Sandbox Code Playgroud)

我对itertools模块做错了什么?

小智 6

没有.结果就是它应该是什么.您显然没有考虑的是结果是迭代器,而不是完全评估的结果列表/元组.您看到的输出是该repr()对象的输出(它返回字符串).您可以通过将前者传递给list构造函数将前者转换为后者:

import itertools
print list(itertools.combinations('12345', 3))
Run Code Online (Sandbox Code Playgroud)

但是当你不需要它而你只是遍历值时,它会通过不同时存储所有结果来节省大量内存.它还允许通过不消耗整个迭代器来避免工作(例如,找到满足某些条件然后返回的第一个组合).