嘿我正在尝试编写一个只打印列表列表中不包含零的列表的函数。以下是我正在使用的列表列表的示例:
[['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'不在A [i]中:”我不确定我的错误在哪里,因为它看起来像是逻辑应该相当简单。谢谢你的帮助!
答案 0 :(得分: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:]]
答案 1 :(得分:1)
Noobie尝试。这是如果你想测试值是否为0。
其中l是列表中的列表。
for i in l:
a=[]
for j in i[2:]:
if float(j)==0:
break
else:
a.append(i)
答案 2 :(得分:1)
你正在努力实现这一目标。
'0.0'
' 0.0'
很麻烦
因此:
def no_zeros(rows):
"""Takes a list of rows, prints each row if and only if it has no zeros."""
for row in rows:
# skip first two elements of row, per specification
tests = [float(x) != 0 for x in row[2:]]
if all(tests):
print row
的产率:
>>> 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']
答案 3 :(得分:0)
如果A是您的列表列表,请过滤(全部,A)