簡體   English   中英

在python中打印此最快的方法?

[英]Fastest way to print this in 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()

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

只需立即打印:

for item in open('a.txt'):
    num, char = item.strip().split()
    print(int(num) * char, end='')

print()  # Newline

您可以乘以字符串以在Python中重復它們:

"foo" * 3foofoofoo

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中不可改變的字符串。 這意味着必須為每個+=創建一個新字符串。 當然,打印可以立即避免此問題。

你可以這樣嘗試

f = open('a.txt')

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

您的代碼實際上是O(sum(n_i)),其中n_i是第i行中的數字。 您無法做得更好,其他答案中的任何解決方案都無法做到,即使它們可能比您的要快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM