【问题标题】:Removing coordinates from list on python [duplicate]从python列表中删除坐标[重复]
【发布时间】: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)

但它不起作用。非常感谢任何帮助。

杰克

【问题讨论】:

  • 你怎么知道它不起作用?

标签: python list


【解决方案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)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2023-02-16
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      相关资源
      最近更新 更多