簡體   English   中英

如何從文件中讀取數字並將其作為浮點數存儲在列表中? / Python

[英]How can I read a number from a file and store it as a float in a list? / Python

(這是我的第一個問題,如果不太清楚,我深表歉意)

我有一個看起來像這樣的文本文件:

106.33333333333333
200.79263333333
68.214276154075

我想將每個數字放入一個列表(作為一個浮點數),然后可以用來計算平均值,最大值和總和。 (mean(),max(),sum())


我已經基於以下類似的問題回答嘗試了多種變體:(簡化代碼)

    whod = []

    filename = (whouser+' '+d)

    for line in filename:
        numbers = line.rstrip('\n')
        whod = whod + [float(numbers)]

    print(whod)

然后檢查

print(list)

輸出:

ValueError: could not convert string to float: 's'

老實說,我沒想到它會起作用,但是如果您有任何建議,那將是很好的。

謝謝。

使用列表推導和with語句打開文件:

with open('text.txt') as text:
    data = [float(i) for i in text]

然后,您可以簡單地在data列表上調用內置方法:

max_value = max(data)
sum_value = sum(data)

首先快速注意一下:正如MattDMo指出的那樣,您要避免將內建函數用作變量名。 在您的示例中,多數民眾贊成listfile

https://docs.python.org/2/library/functions.html#list https://docs.python.org/2/library/functions.html#file


with open('filename.txt','r') as numbers_file:
    numbers = [float(n) for n in numbers_file]

print 'numbers: %s' % numbers
numbers_max = max(numbers)
print 'max: %s' % numbers_max
numbers_sum = sum(numbers)
print 'sum: %s' % numbers_sum
numbers_mean = numbers_sum / float(len(numbers))
print 'mean: %s' % numbers_mean

如果仍然出現此錯誤:

ValueError: could not convert string to float: 's'

您需要確保文件中的每個項目都可以完全按原樣轉換為浮點數。 如果您想以更具彈性的方式讀取文件:

numbers = []
with open('filename.txt','r') as numbers_file:
    for line in numbers_file:
        try:
            num = float(line.strip())
            numbers.append(num)
        except ValueError:
            continue

這將確保您僅從文件中讀取數字行。


方括號內的代碼[float(n) for n in numbers_file]將遍歷numbers_file (filename.txt)中的行,並在構建列表時將每個項目numbers_filefloat 然后將結果列表傳遞給extend列表,以更新原始numbers列表。 在一行代碼中對這樣的列表進行迭代稱為列表理解

這是有關list方法的python文檔:

https://docs.python.org/2/tutorial/datastructures.html#more-on-lists

my_list = my_list + [float(numbers)]

暫無
暫無

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

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