组合字符串和整数并打印

时间:2018-11-04 03:14:50

标签: python list optimization printing iteration

给出以下列表:

a = ['abc','cde','efg']
b = [[1,2,3],[2,3,4],[4,5,6]]

打印输出的最佳方式是什么,如下所示: 在寻找一种优化的方法时,我大约有100 x 100个元素。 另外请记住,b中的每个元素都是整数,而a中的每个元素都是字符串

abc,1,2,3
cde,2,3,4
efg,4,5,6

3 个答案:

答案 0 :(得分:0)

要以您指定的确切格式打印:

print('\n'.join([a[i] + ',' + str(b[i]).strip('[').strip(']').replace(' ','') for i in range(len(a))]))

输出:

abc,1,2,3
cde,2,3,4
efg,4,5,6

100 * 100元素对于python程序来说是非常小的数字-这种规模的任何优化都可能不足以引起我们的人类注意到。要测试:

%%timeit
array = np.random.randn(100,100)
print('\n'.join([str(e) for e in array])) # prints like above

结果:

148 ms ± 13.2 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

也-请记住,主要瓶颈应该是print,而不是进行打印的实际过程,因此使用zip或其他技巧可能不起作用,因为它们对终端没有帮助/ other stdout捕获打印足够快。

答案 1 :(得分:0)

使用range

for i in range(len(b)):
    print("{},{}".format(a[i],','.join([str(x) for x in b[i]])))

#output,
abc,1,2,3
cde,2,3,4
efg,4,5,6

答案 2 :(得分:0)

您可以尝试使用zip()str.join()

>>> a = ['abc','cde','efg']
>>> b = [[1,2,3],[2,3,4],[4,5,6]]
>>> print('\n'.join(','.join(map(str, (x, *y))) for x, y in zip(a, b)))
abc,1,2,3
cde,2,3,4
efg,4,5,6