2
def avg_temp_march(f):
    """(file open for reading) -> float

    Return the average temperature for the month of March
    over all years in f.
    """
    file = open(f, 'r')

    file.readline()
    file.readline()
    file.readline()

    lines = file.read().strip().split('\n')
    file.close

    for line in lines:
        month = line.split('    ')[0:]
        march = month[2]

表格是:

['24.7', '25.7', '30.6', '47.5', '62.9', '68.5', '73.7', '67.9', '61.1', '48.5', '39.6', '20.0']
['16.1', '19.1', '24.2', '45.4', '61.3', '66.5', '72.1', '68.4', '60.2', '50.9', '37.4', '31.1']
['10.4', '21.6', '37.4', '44.7', '53.2', '68.0', '73.7', '68.2', '60.7', '50.2', '37.2', '24.6']
['21.5', '14.7', '35.0', '48.3', '54.0', '68.2', '69.6', '65.7', '60.8', '49.1', '33.2', '26.0']
['19.1', '20.6', '40.2', '50.0', '55.3', '67.7', '70.7', '70.3', '60.6', '50.7', '35.8', '20.7']
['14.0', '24.1', '29.4', '46.6', '58.6', '62.2', '72.1', '71.7', '61.9', '47.6', '34.2', '20.4']
['8.4', ' 19.0', '31.4', '48.7', '61.6', '68.1', '72.2', '70.6', '62.5', '52.7', '36.7', '23.8']
['11.2', '20.0', '29.6', '47.7', '55.8', '73.2', '68.0', '67.1', '64.9', '57.1', '37.6', '27.7']
['13.4', '17.2', '30.8', '43.7', '62.3', '66.4', '70.2', '71.6', '62.1', '46.0', '32.7', '17.3']
['22.5', '25.7', '42.3', '45.2', '55.5', '68.9', '72.3', '72.3', '62.5', '55.6', '38.0', '20.4']
['17.6', '20.5', '34.2', '49.2', '54.8', '63.8', '74.0', '67.1', '57.7', '50.8', '36.8', '25.5']
['20.4', '19.6', '24.6', '41.3', '61.8', '68.5', '72.0', '71.1', '57.3', '52.5', '40.6', '26.2']

我已经弄清楚如何获取每个列表的第三项(3 月份的温度),但不知道如何将它们转换为浮点数以便得到总和

4

3 回答 3

9

只需使用map

>>> l = ["1.2", "2.4"]
>>> print map(float, l)
[1.2, 2.4]
>>>
于 2013-07-31T21:16:06.590 回答
1

在您当前的代码中,您可以使用float

for line in lines:
    month = line.split('    ')[0:]
    march = float(month[2])

我认为更多的pythonic方式是

sum([float(x.split(' ')[2]) for x in lines])
于 2013-07-31T21:15:50.843 回答
1

列表推导可以解决问题:

myListOfFloats = [float(i) for i in myListOfStrings]
于 2013-07-31T21:18:17.240 回答