通过循环创建列表

0 python for-loop list

我正在尝试通过循环转换创建新列表,但只有最终转换才会列入列表,因为转换变量始终保持不变

celsius_temps = [25.2, 16.8, 31.4, 23.9, 28.0, 22.5, 19.6]

number = 0

for i in range(1,len(celsius_temps)+1):
    conversion = celsius_temps[0+number]*1.8000 + 32
    number += 1
    fahrenheit_temps = [conversion]


print fahrenheit_temps
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 8

您正在每次迭代创建一个新的列表对象:

fahrenheit_temps = [conversion]
Run Code Online (Sandbox Code Playgroud)

您将在循环外创建一个列表对象,并将结果附加到:

number = 0
fahrenheit_temps = []

for i in range(1,len(celsius_temps)+1):
     conversion = celsius_temps[0+number] * 1.8 + 32
     number += 1
     fahrenheit_temps.append(conversion)
Run Code Online (Sandbox Code Playgroud)

你真的想要清理那个循环; 你没有使用i你可以简单地number用它生产的地方:

fahrenheit_temps = []
for number in range(len(celsius_temps)):
     conversion = celsius_temps[number] * 1.8 + 32
     fahrenheit_temps.append(conversion)
Run Code Online (Sandbox Code Playgroud)

或者更好的是,经过短短循环celcius_temps 直接:

fahrenheit_temps = []
for temp in celsius_temps:
     conversion = temp * 1.8 + 32
     fahrenheit_temps.append(conversion)
Run Code Online (Sandbox Code Playgroud)

您还fahrenheit_temps可以使用列表理解一次性生成整体:

fahrenheit_temps = [temp * 1.8 + 32 for temp in celsius_temps]
Run Code Online (Sandbox Code Playgroud)

最后一行的快速演示:

>>> celsius_temps = [25.2, 16.8, 31.4, 23.9, 28.0, 22.5, 19.6]
>>> [temp * 1.8 + 32 for temp in celsius_temps]
[77.36, 62.24, 88.52, 75.02, 82.4, 72.5, 67.28]
Run Code Online (Sandbox Code Playgroud)