2024-05-15 22:09:31 发布
网友
假设我有一个iterable:
var = "ABCDEF"
我得到了如下的iterable:
it = itertools.combinations(var,2)
是否有任何一个函数可以打印iterables的所有值
printall(it)
而不是使用for循环
for
这取决于你想要什么,如果你想打印出所有的值,你需要计算它们-iterable不能保证在所有的值都被请求后才计算出来,所以实现这一点最简单的方法是make a list:
print(list(iterable))
这将以正常的列表格式打印项目,这可能是合适的。如果您希望每个项目都位于新行,最好的选择是,如您所述,一个简单的for循环:
for item in iterable: print(item)
如果您不需要特定格式的数据,而只需要可读(例如,并非所有数据都在一行中),那么您可能需要签出the ^{} module
最后一个选项,我并不认为是最佳的,但为了完整性,可以在3.x中使用,其中the ^{} function非常灵活:
print(*iterable, sep="\n")
这里我们将unpack the iterable作为print()的参数,然后将分隔符设为换行符(与通常的空格相反)
print()
您可以使用str.join方法将iterable的每个元素连接到新行
str.join
print('\n'.join(it))
您可以使用允许每个元素按照您的意愿进行格式化的格式:
>>> print '\n'.join('{:>10}'.format(e) for e in iter([1,2,'1','2',{1:'1'}])) 1 2 1 2 {1: '1'}
每个元素不一定是字符串,但如果不是字符串,则必须具有__repr__方法
__repr__
然后,您可以轻松编写所需的函数:
>>> def printall(it,w): print '\n'.join('{:>{w}}'.format(e,w=w) for e in it) >>> printall([1,2,'3','4',{5:'6'}],10) 1 2 3 4 {5: '6'}
我使用的是列表,但任何iterable都可以
这取决于你想要什么,如果你想打印出所有的值,你需要计算它们-iterable不能保证在所有的值都被请求后才计算出来,所以实现这一点最简单的方法是make a list:
这将以正常的列表格式打印项目,这可能是合适的。如果您希望每个项目都位于新行,最好的选择是,如您所述,一个简单的for循环:
如果您不需要特定格式的数据,而只需要可读(例如,并非所有数据都在一行中),那么您可能需要签出the ^{} module
最后一个选项,我并不认为是最佳的,但为了完整性,可以在3.x中使用,其中the ^{} function 非常灵活:
这里我们将unpack the iterable作为
print()
的参数,然后将分隔符设为换行符(与通常的空格相反)您可以使用
str.join
方法将iterable的每个元素连接到新行您可以使用允许每个元素按照您的意愿进行格式化的格式:
每个元素不一定是字符串,但如果不是字符串,则必须具有
__repr__
方法然后,您可以轻松编写所需的函数:
我使用的是列表,但任何iterable都可以
相关问题 更多 >
编程相关推荐