问题描述
我有一个列表a具有id, (x,y), err用对象检测相关联。
因此,每个id都与一个err相关联。
err的值从0变为5。我要执行的操作是获取与每个id关联的err并检查其是否等于0。如果err为0,则将该id附加到列表errorfree_id 。
我无法从上述代码中执行此操作。
使用字典这样做会更好吗?
任何帮助将不胜感激。
errorfree_id = []
a = [(1,(50,26),0),(6,(18,29),0),(4,(4,18),1)]
for id, (x,y) , err in a:
if id in err == 0:
errorfree_id.append(id)
return errorfree_id
1楼
这是一种方法:
errorfree_id = []
a = [(1,(50,26),0), (6,(18,29),0), (4,(4,18),1)]
for i, j, k in a:
if k == 0:
errorfree_id.append(i)
errorfree_id # [1, 6]
但是,列表理解可能更易于维护:
errorfree_id = [i for i, _, k in a if k == 0]
2楼
您的状况有误:
for id, (x,y) , err in a:
if err == 0:
errorfree_id.append(id)
if id in err == 0应该是if err == 0
3楼
您还可以使用filter和lambda来做到这一点:
errorfree_id = [i[0] for i in filter(lambda (i,_,l): l==0, a)]
输出:
[1, 6]
4楼
您可以将列表理解与元组拆包一起使用:
>>> a = [(1,(50,26),0),(6,(18,29),0),(4,(4,18),1)]
>>> [id for id,(x,y),err in a if err==0]
[1, 6]