从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列表中删除坐标[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 列表中删除重复项

Python从列表中删除项目[重复]

从python中的2d列表中删除重复的词典

python中怎么从一个列表中可重复的随机抽取元素构成新列表?

从 2D 列表中删除连续重复项,python?

从Python列表中的特定位置删除项目[重复]