我一直在尝试将列表的索引转换为float,以便我可以将它附加到循环的每次迭代的新列表中,这样我最终可以获取该最终附加列表的最小值。当我做
之类的事情a = '4.34324'
f = float(a)
在python shell中,它似乎工作正常,但我无法弄清楚为什么这不起作用。作为参考,tdlist是一个列表列表,当我这样做时
print(TMINlist[tdlist.index(x)])
输出是字符串
'60.6'
所以我无法弄清楚为什么它不会将它转换为浮点数。我的代码如下,问题出在第8行。
TMINlist = []
for pos in range(len(tdlist)):
TMINlist.append(tdlist[pos][10])
TMINlist2 = []
for x in tdlist:
if int(x[1][1]) == month:
if x != '':
a = (TMINlist[tdlist.index(x)])
value = float(a)
TMINlist2.append(value)
else:
continue
添加了print(repr())语句后,返回此错误:
'60.6'
''
Traceback (most recent call last):
File "C:/Users/liamm/Dropbox/Hw/Homework 5/hw5Part2.py", line 57, in
<module>
value = float(a)
builtins.ValueError: could not convert string to float:
列表的示例片段是:
[['TROY LOCK AND DAM NY', ['2014', '01'], '18', '0', '-9', '6.8', '58', '2.16', '12.7', '19.8', '29.2', '10.4\n'], ['TROY LOCK AND DAM NY', ['2014', '02'], '20', '0', '-7', '12', '53', '4.08', '24.6', '22.2', '31.2', '13.4\n']]
答案 0 :(得分:0)
你的错误在这里:
x[1][1]
当你这样做时,第一个x[1]
返回一个字符串,第二个x [1] [1]重新调整字符串中的第二个字符,所以你必须将它改为:
TMINlist = []
for pos in range(len(tdlist)):
TMINlist.append(tdlist[pos][10])
TMINlist2 = []
for x in tdlist:
if int(x[1]) == month: # here, you have to take the x[1], not x[1][1]
if x != '':
value = float(TMINlist[tdlist.index(x)])
TMINlist2.append(value)
else:
continue
示例:
考虑这个清单:
TMINlist = [] tdlist = [[&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;],[&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;]] TMINlist2 = []
运行上面的代码后,他们将返回:
TMINlist2
=> [0.4, 0.4]
TMINlist
=> ['0.4', '0.4']
tdlist
=> [['0.4', '0.4', '0.4', '0.4'], ['0.4', '0.4', '0.4', '0.4']]