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