从python列表中删除坐标[重复]
Posted
技术标签:
【中文标题】从python列表中删除坐标[重复]【英文标题】:Removing coordinates from list on python [duplicate] 【发布时间】:2017-03-03 16:14:28 【问题描述】:我在 Python 中创建了一个充满“坐标”的列表:L1 = [(1,2), (5,6), (-1,-2), (1,-2) 等..] .
如果我想删除列表中包含负数的所有项目,我该怎么做?
我试过了:
for (a,b) in L1:
if a < 0 or b < 0:
L1.remove(a,b)
但它不起作用。非常感谢任何帮助。
杰克
【问题讨论】:
你怎么知道它不起作用? 【参考方案1】:您无法在迭代时更改某些内容。结果是奇怪的和违反直觉的,而且几乎不是你想要的。事实上,许多集合明确禁止这样做(例如集合和字典)。
相反,迭代一个副本(for e in a[:]: ...),或者,不是修改现有列表,而是过滤它以获取包含您想要的项目的新列表([e for e in a如果 ...])。请注意,在很多情况下,您不必再次迭代过滤,只需将过滤与数据的生成合并即可。
L2 = []
for (a,b) in L1:
if a >= 0 and b >= 0:
L2.append((a,b))
L1 = L2
print L1
【讨论】:
【参考方案2】:您可以使用列表推导进行过滤:
>>> coords = [(1, 2), (5, 6), (-1, -2), (1, -2)]
>>> [coord for coord in coords
... if not any(number < 0 for number in coord)]
[(1, 2), (5, 6)]
【讨论】:
以上是关于从python列表中删除坐标[重复]的主要内容,如果未能解决你的问题,请参考以下文章