我正在尝试通过循环转换创建新列表,但只有最终转换才会列入列表,因为转换变量始终保持不变
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)
您正在每次迭代创建一个新的列表对象:
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)