基于值筛选列表列表(Python)中的列表
嘿,我想写一个函数,只打印一个列表,列表中不包含零。以下是我正在处理的列表示例:基于值筛选列表列表(Python)中的列表,python,list,loops,Python,List,Loops,嘿,我想写一个函数,只打印一个列表,列表中不包含零。以下是我正在处理的列表示例: [['10011.0', ' 65301.0', ' 0.085', ' 0.0', ' 0.0', ' 0.0', ' 0.03', ' 0.03', ' 0.075', ' 0.05', ' 0.065', ' 0.05', ' 0.05', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0'], ['10017.0', ' 2743.0', ' 0.0', ' 0
[['10011.0', ' 65301.0', ' 0.085', ' 0.0', ' 0.0', ' 0.0', ' 0.03', ' 0.03', ' 0.075',
' 0.05', ' 0.065', ' 0.05', ' 0.05', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0'],
['10017.0', ' 2743.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.2', ' 0.413333', ' 0.415', ' 0.3125', ' 0.45', ' 0.46', ' 0.55'],
['10017.0', ' 9262.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.35', ' 0.69', ' 0.675', ' 0.8075', ' 0.8075', ' 0.5325', ' 0.785'],
['10017.0', ' 29319.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0225', ' 0.06', ' 0.0575', ' 0.105', ' 0.1', ' 0.045', ' 0.0'],
['10017.0', ' 43562.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.0', ' 0.106667', ' 0.0925', ' 0.09', ' 0.1', ' 0.09', ' 0.1025'],
['10017.0', ' 43563.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 0.106667', ' 0.0925', ' 0.09', ' 0.1', ' 0.09', ' 0.1028']]
我正在运行的代码是:
def no_zero(A):
for i in range(len(A)):
for j in range(2, (len(A[i])+1)):
if '0.0' not in A[i]:
print A[i]
break
出于某种原因,它不会过滤任何列表并打印整个列表,尽管有条件:“如果'0.0'不在[i]:”我不确定我的错误在哪里,因为逻辑似乎应该相当简单。谢谢你的帮助 通常,当您想要筛选项目列表时,我们使用列表理解和筛选条件来获取新列表。所以,在你的情况下,可以这样做
[c_list for c_list in list_of_lists if '0.0' not in c_list]
这将给出其中没有0.0
的所有列表。如果要跳过前两个元素,请在检查时从第三个元素开始
[c_list for c_list in list_of_lists if '0.0' not in c_list[2:]]
通常,当您想要筛选项目列表时,我们使用列表理解和筛选条件来获得新列表。所以,在你的情况下,可以这样做
[c_list for c_list in list_of_lists if '0.0' not in c_list]
这将给出其中没有0.0
的所有列表。如果要跳过前两个元素,请在检查时从第三个元素开始
[c_list for c_list in list_of_lists if '0.0' not in c_list[2:]]
如果A是您的列表列表,请过滤(全部,A)如果A是您的列表列表,请过滤(全部,A)。这是如果您想测试值是否为0 我就是你们的名单
for i in l:
a=[]
for j in i[2:]:
if float(j)==0:
break
else:
a.append(i)
Noobie尝试。这是如果您想测试值是否为0 我就是你们的名单
for i in l:
a=[]
for j in i[2:]:
if float(j)==0:
break
else:
a.append(i)
你让这件事变得更加困难
'0.0'
相等很麻烦'0.0'
>>> no_zeros(A)
['10017.0', ' 43563.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0',
' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 0.106667', ' 0.0925', ' 0.09', ' 0.1',
' 0.09', ' 0.1028']
你让这件事变得更加困难
'0.0'
相等很麻烦'0.0'
>>> no_zeros(A)
['10017.0', ' 43563.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 1.0',
' 1.0', ' 1.0', ' 1.0', ' 1.0', ' 0.106667', ' 0.0925', ' 0.09', ' 0.1',
' 0.09', ' 0.1028']
为什么有第二个
for
循环?你从不在任何地方使用j
。我需要它跳过列表的前两个元素。很抱歉没有在最初的问题中澄清这一点。好吧,但您仍然从未在代码中的任何地方使用j
。您也不想使用len+1
作为终止点,因为A[len(A)]
从来都不存在。为什么要使用第二个for
循环?你从不在任何地方使用j
。我需要它跳过列表的前两个元素。很抱歉没有在最初的问题中澄清这一点。好吧,但您仍然从未在代码中的任何地方使用j
。您也不想使用len+1
作为终止点,因为A[len(A)]
从不存在。它应该是[2:
,而不是[3:
。列表是零索引的。@TheSoundDefense Thank:)修复了它。除了列表中的零是“0.0”
,我不指望这个特殊的间距`最好使用浮子;IEEE-754中至少保证0.0的精确表示。它应该是[2://code>,而不是[3://code>。列表是零索引的。@TheSoundDefense Thank:)修复了它。除了列表中的零是“0.0”
,我不指望这个特殊的间距`最好使用浮子;IEEE-754中至少保证0.0的精确表示。您测试过吗A
A-s iterable是一个长度为6的列表(每个列表本身都是一个列表。非空列表是“trueish”,因此A
中的每个列表对于all
都是真的,因此将返回所有6个列表的列表。您测试了吗?A
A-s iterable是长度为6的列表(每个列表本身都是一个列表。非空列表是“真实的”,因此a
中的每个列表对于all
都是真实的,因此所有6个列表的列表都将被返回。+1对于noob来说非常好。你甚至把for/break/else
的事情做对了。你错过了i[2:]中j的):
事情,但那是隐藏在评论中的,而不是在OP问题中。不,一开始我自己也错过了“跳过前两个元素”。善待自己;)+1对于noob来说相当不错。你甚至把/break/else的事情做对了。你错过了I[2:]中j的:
事情,但那是隐藏在评论中的,而不是在OP问题中。不,一开始我自己也错过了“跳过前两个元素”。善待自己;)