是否有任何单个函数来打印iterables值

use*_*107 15 python

假设我有任何可迭代的

var = "ABCDEF"

我得到像这样的迭代

it = itertools.combinations(var,2)

是否有任何单一的功能来打印所有的迭代值,如

printall(it)

而不是使用for循环

Gar*_*tty 24

这取决于你想要什么,如果你想要打印出所有的值,你需要计算它们 - 一个iterable并不能保证在所有值被请求之前计算它们,所以最简单的方法就是制作它清单:

print(list(iterable))
Run Code Online (Sandbox Code Playgroud)

这将打印出正常列表格式的项目,这可能是合适的.如果你想要一个新行上的每个项目,最好的选择是,如你所提到的,一个简单的for循环:

for item in iterable:
    print(item)
Run Code Online (Sandbox Code Playgroud)

如果你并不需要以特定格式的数据,但只需要它是可读的(不是所有在同一行,例如),你可能要检查pprint模块.

最后一个选择,我并不觉得自己真的是最优的,但对于提完整性,有可能在3.x中,其中print()功能非常灵活:

print(*iterable, sep="\n")
Run Code Online (Sandbox Code Playgroud)

在这里,我们将iterable作为参数解包print(),然后使分隔符成为换行符(而不是通常的空格).

  • 另外,值得指出的是,一旦迭代了迭代器,它就会被消耗掉。 (2认同)

Vol*_*ity 5

您可以使用该str.join方法并将迭代的每个元素加入新行。

print('\n'.join(it))
Run Code Online (Sandbox Code Playgroud)

  • +1,但值得注意的是,这假定元素是字符串。如果不是,则需要 [生成器表达式或列表推导式](http://www.youtube.com/watch?v=pShL9DCSIUw)。 (4认同)