当前位置: 首页 > 面试题库 >

遍历列表并删除重复元素时出现循环问题

郎健柏
2023-03-14
问题内容

我想遍历一个列表,并删除计数超过一次的项目,这样它们就不会被for循环重复打印。

但是,列表中仅出现一次的某些项目似乎也受此影响,我不知道为什么。

任何投入将不胜感激。

示例输出:

listy = [2,2,1,3,4,2,1,2,3,4,5]
for i in listy:
  if listy.count(i)>1:
    print i, listy.count(i)
    while i in listy: listy.remove(i)
  else:
    print i, listy.count(i)

输出:

 2 4
 3 2
 1 2

因此完全忽略了4和5。


问题答案:

遍历列表时,请勿修改列表。这应该工作:

listy = [2,2,1,3,4,2,1,2,3,4,5]
found = set()
for i in listy:
    if not i in found:
        print i, listy.count(i)
        found.add(i)

结果是:

2 4
1 2
3 2
4 2
5 1


 类似资料:
  • 问题内容: 我正在遍历Python中的元素列表,对其进行一些操作,然后在满足特定条件的情况下将其删除。 我应该使用什么来代替?我曾问过类似的问题,但注意到将对所有元素执行部分,因此消除了使用过滤器的解决方案。 问题答案: 你始终可以遍历列表的副本,从而可以自由修改原始列表:

  • 问题内容: 在Java中,我可以通过使用an ,然后使用迭代器的方法来删除迭代器返回的最后一个元素,如下所示: 我将如何在Python中执行此操作?我在for循环中遍历列表时无法修改列表,因为它会导致内容被跳过(请参阅此处)。而且似乎没有Java的等效接口。 问题答案: 遍历列表的 副本 :

  • 我正在使用XPath/CSS和Selenium来定位网站上的元素。我想创建一个方法,在这个方法中,我遍历一个定位器列表(XPath/CSS),然后程序选择哪个有效。换句话说,它从定位器1开始-如果定位器存在,它将返回true并存在循环。否则,它将移动到列表中的下一个定位器。一旦用完所有CSS定位器,它就会转到XPath等等。 目前,我正在考虑如下实施: 然后,我计划为每种定位器类型调用此方法(一次

  • 我在循环节点时遇到了麻烦。我有一些工作示例,但是XML布局略有不同。 XML 我可以得到一个家庭的列表,但我需要得到每个家庭下的标签(如“喜欢在外面玩”)之间的随机信息列表。到目前为止,我只能得到一份姓氏的名单。 XSLT 只是不知道为什么这不起作用。

  • 问题内容: 以下是提供输出的代码段:。由于访问列表中的数字3,我期望获得输出。在线给出的解释是“每次迭代中更改的价值”,但我不太了解如何或为什么。任何解释都很好! 问题答案: 这里发生的是一个列表在循环过程中发生了变异。 让我们考虑以下代码片段: 输出为: 每次迭代: 从内部指针当前指向的位置读取值 立即将其分配给列表中的最后一个元素 在最后一个元素打印在标准输出上之后 就像这样: 内部指针指向第

  • 我发现这个问题很有帮助,但是我仍然很难让我的循环正确工作。 期望: 我正在构建一个简单的JavaFX应用程序,它的用户界面通过几个文本字段和几个按钮进行输入。我已经建立了一个“重置”按钮,应该清除所有文本字段中的文本,但是我不能让它工作。 按钮的方法循环遍历FXML元素,我希望它能识别TextFields并将它们添加到列表中: 然后,文本字段列表返回到此方法,其中文本字段被循环并清除: 现实: 在