如何在python列表中获取项的索引和值?
我有这样一份清单:如何在python列表中获取项的索引和值?,python,string,list,floating-point,Python,String,List,Floating Point,我有这样一份清单: lst = [None,None,None,'0.141675556588',None,None,None,'0.268087046988'] another_lst = [['3', 0.14], ['7', 0.26]] 我想得到任何大于0.1的数字,并将它们以及它们的列表索引放在另一个列表中。在下面的列表中: lst = [None,None,None,'0.141675556588',None,None,None,'0.268087046988'] anothe
lst = [None,None,None,'0.141675556588',None,None,None,'0.268087046988']
another_lst = [['3', 0.14], ['7', 0.26]]
我想得到任何大于0.1的数字,并将它们以及它们的列表索引放在另一个列表中。在下面的列表中:
lst = [None,None,None,'0.141675556588',None,None,None,'0.268087046988']
another_lst = [['3', 0.14], ['7', 0.26]]
到目前为止,我已经尝试过这段代码,但它不是很有用:
another_lst = []
for position, item in enumerate(lst):
if float(item) > 0.1:
another_lst += [position, item]
我需要帮助。谢谢 您可以尝试以下方法:
lst = [None,None,"string", None,'0.141675556588',None,None,"hi how are you", None,'0.268087046988']
positions = [[i, a] for i, a in enumerate(lst) if a is not None and not ''.join(a.split()).isalpha() and float(a) > 0.1]
输出:
[[4, '0.141675556588'], [9, '0.268087046988']]
您遇到的错误是因为您试图执行
float(None)
。在for循环的开始处进行检查,以过滤掉这些none:
for position, item in enumerate(a):
if item is not None and float(item) > 0.1:
another_lst.append([position, item])
另外,请使用另一个函数
而不是+=
。有时后者会导致意外行为。您必须检查项
是否为无
,否则将引发异常。修改条件:if float(item)>0.1:
到:if item和float(item)>0.1:
使用。追加而不是类似于的+=
。扩展如果列表中有类似于[None',string',3'的字符串,该怎么办。那么如何进行筛选?如果列表中有一个字符串,如[None,'string','3'],该怎么办。那么我如何进行筛选?@0x1请查看我最近的编辑。最好的方法是使用isalpha
我仍然会遇到相同的错误:ValueError:无法将字符串转换为float
好的。我现在明白了。非常感谢@0x1很高兴帮助您!我刚刚发布了更新的最终输出。