2024-05-15 23:43:36 发布
网友
假设我有
var = "ABCDEF"
我得到了这样的待遇
it = itertools.combinations(var,2)
有没有一个函数可以打印所有iterables的值,比如
printall(it)
而不是使用for循环
您可以使用允许按您的要求格式化每个元素的格式:
>>> 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:
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))
您可以使用允许按您的要求格式化每个元素的格式:
每个元素不一定是字符串,但如果不是字符串,则必须有一个
__repr__
方法。然后,您可以轻松编写所需的函数:
我正在使用一个列表,但是任何iterable都可以。
这取决于你想要什么,如果你想打印出所有的值,你需要计算它们-一个iterable不保证在所有的值都被请求之后才进行计算,所以最简单的方法是make a list:
这将打印出正常列表格式的项目,这可能是合适的。如果您希望每一项都在一个新行中,最好的选择是,如您所提到的,一个简单的for循环:
如果您不需要特定格式的数据,而只需要它是可读的(例如,不是所有的数据都在一行),那么您可能需要签出the ^{} module 。
最后一个选项,我并不认为是最佳的,但是为了完整性,在3.x中是可能的,其中the ^{} function 非常灵活:
在这里,我们将unpack the iterable作为
print()
的参数,然后将分隔符设为换行符(与通常的空格相反)。您可以使用
str.join
方法并在新行上连接iterable的每个元素。相关问题 更多 >
编程相关推荐