给出以下列表:
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
答案 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