2017-11-25 47 views
0

我有一個整數列表,我需要排序並出現在屏幕上(我明白了)但我也需要將它寫入一個新文件。將一個整數列表更改爲一個文件的字符串

data = [] 
with open('integers.txt','r') as myfile: 
    for line in myfile: 
     data.extend(map(int, line.split(','))) 
print (sorted (data)) 

text_file = open('sorted_integers.txt', 'w') 
text_file.write(sorted(data)) 
text_file.close() 
+0

你爲什麼排序相同的數據兩次?不要調用'sorted'函數,而應該對數據進行in-place排序:'data.sort()'。 –

+0

@ PM2Ring好點。介意我是否將其添加到我的答案中? (它讓我想到OP不應該這樣做) –

+0

@cᴏʟᴅsᴘᴇᴇᴅ爲此而努力! 'sorted'函數可以很方便,但它會創建一個新列表,將數據複製到它,然後在該新列表中調用'.sort'方法。所以在這種情況下,簡單地對原始列表進行排序會更有效率。 –

回答

1

您是否希望以與保存輸入相同的方式保存輸出?在這種情況下,您可以輕鬆使用printfile參數。

with open('sorted_integers.txt', 'w') as f: 
    print(*sorted(data), sep=',', end='', file=f) 

這是總是推薦您使用with...as上下文管理使用File I/O,它簡化了你的代碼的時候。

如果你使用python2.x工作,首先做一個__future__進口:

from __future__ import print_function 

另一點(感謝,PM 2Ring)是調用list.sort實際上是更好的性能/效率比sorted ,因爲原始列表排序到位,而不是返回一個新的列表對象,因爲sorted會做。

綜上所述,

data.sort() # do not assign the result! 

with open('sorted_integers.txt', 'w') as f: 
    print(*data, sep=',', end='', file=f) 
相關問題