Python 组合字符串和整数并打印
鉴于以下列表:Python 组合字符串和整数并打印,python,list,optimization,printing,iteration,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 要以指定的精确格式打印,请执行以下操作: print('\n'.join([a[i] + ',' + str(b[i]).strip('[').stri
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
要以指定的精确格式打印,请执行以下操作:
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
对于python程序来说,100*100元素是一个非常小的数字——任何这种规模的优化都可能无法让我们人类注意到。要测试:
%%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)
另外-请记住,主要的瓶颈应该是
打印
,而不是实际的打印过程,因此使用邮政编码或其他技巧可能不起作用,因为它们不能帮助终端/其他标准件足够快地捕获打印。使用范围
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
您可以尝试使用zip()
和str.join()
:
是的,但我必须以100 x 100的速度运行5000次迭代,如果每次迭代需要几秒钟,整个程序需要几分钟,因此我担心100*100可能需要100毫秒,经过测试。另外,大部分时间可能是由print
本身占用的,因为stdout捕获和显示字符需要时间。您能检查我的答案并告诉我们是否有帮助吗?
>>> 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