在python中打印最快的方法?

时间:2016-10-10 14:41:52

标签: python

假设我有一个包含此文本的文本文件,左边的数字表示右边有多少个字符:

2 a
1 *
3 $

如何在最快的时间内获得此输出?

aa*$$$

这是我的代码,但有N ^ 2的复杂性:

f = open('a.txt')
for item in f:
    item2=item.split()
    num = int(item2[0])
    for i in range(num):
        line+=item2[1]
print(line)
f.close()

5 个答案:

答案 0 :(得分:4)

KISS

with open('file.txt') as f:
    for line in f:
        count, char = line.strip().split(' ')
        print char * int(count),

答案 1 :(得分:3)

立即打印:

if (root==null){
    root=new Node(i);
    return; // DONE!!
}

答案 2 :(得分:1)

您可以将字符串乘以在Python中重复它们:

"foo" * 3为您提供foofoofoo

line = []
with open("a.txt") as f:
    for line in f:
        n, c = line.rstrip().split(" ")
        line.append(c * int(n))

print("".join(line))

您可以直接打印,但上面的代码可让您在字符串中获得所需的输出。

使用列表然后join比在字符串上使用+=更有效,因为字符串在Python中是不可变的。这意味着必须为每个+=创建一个新字符串。当然,打印可以立即避免这个问题。

答案 3 :(得分:0)

你可以这样试试,

f = open('a.txt')

print ''.join(int(item.split()[0]) * item.split()[1] for item in f.readlines())

答案 4 :(得分:0)

您的代码实际上是O(sum(n_i)),其中n_i是行i中的数字。你不能做得更好,其他答案中的解决方案都没有,即使它们可能比你的更快。