【问题标题】:removing duplicate numbers in a list using Python 3.8.5使用 Python 3.8.5 删除列表中的重复数字
【发布时间】:2020-08-20 09:39:49
【问题描述】:

我必须使用 Python 3 语言删除列表中的重复项。这段代码有什么问题?

numbers = [1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5] 
for num in numbers:
    if numbers.count(num) > 1:
        numbers.remove(num)
print(numbers) 
  1. 请告诉我如何解决这个问题??

【问题讨论】:

  • 如果您不关心订单:list(set(numbers))
  • 这段代码有什么问题?”:在迭代时不要修改可迭代对象。奇怪的事情会发生。
  • 永远不要修改您正在迭代的结构。这与这篇文章中的问题相同:stackoverflow.com/questions/63193121/…
  • 凭经验说:永远不要附加到您正在处理的结构上。这很容易造成无限循环!
  • 这能回答你的问题吗? Removing from a list while iterating over it

标签: python python-3.x python-3.7


【解决方案1】:

一般来说,不要在这样的循环中从列表中追加或删除值。

有一个很好的pythonic方法可以做到这一点:把它变成一个集合(每个只有一项),然后将该集合转换成一个列表。

numbers = [1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5]
numbers = list(set(numbers))
print(numbers)
>>> [1, 2, 3, 4, 5]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多