【问题标题】:How can I get rid of repetition in the for loop [duplicate]我怎样才能摆脱for循环中的重复[重复]
【发布时间】:2014-03-31 16:42:38
【问题描述】:
for line in file2.splitlines():
  for l in file1.splitlines():
    if line in l:
     print l

我怎样才能摆脱重复?

【问题讨论】:

  • 嗯,你是不是又问the same question?
  • 为什么要发两次?
  • 公平地说,15 小时前没有投票的问题不太可能得到任何新答案。但是,如果第一个问题至少先被删除,那就太好了。
  • 或者可以对其进行编辑和改进以使其回到列表的前面。您的代码可能无法满足您的要求;当你读取外循环的第一行时,内循环读取file2中的所有数据;下一次循环时,内部循环什么也不做(没有剩余的行可以读取)。你需要再考虑一下。
  • 对于重复的问题,我深表歉意,但我是论坛的新手,我以前没有这方面的经验。我试图删除第一个,但很难,因为它有答案。跨度>

标签: python for-loop iteration


【解决方案1】:

如果我理解正确,您希望打印重复。

你可以这样做:

print [line for line in file2.splitlines() if line in file1.splitlines()]

但如果你想以更好的方式做到这一点,请使用集合:

print list(file2.splitlines() & file1.splitlines())

【讨论】:

  • line 的每次迭代中,第一个sn-p 不会调用file1.splitlines() 吗?
【解决方案2】:

从第二个文件中的行中创建字典将是一种更快的解决方案,并且它也可以消除重复项:

from collections import defaultdict

second_file = open('second.txt')
second_file_dict = defaultdict(int)
first_file_dict = defaultdict(int)

for line in second_file:
    second_file_dict[line.strip()] += 1
second_file.close()

first_file = open('first.txt')
for line in first_file:
    if line in second_file_dict and not in first_file_dict:
        print line
    first_file_dict[line.strip()] += 1        
first_file.close()

【讨论】:

  • 我试过了,但没有结果
  • @5555555555 你收到错误了吗?
  • 没有错误,但没有结果
  • @5555555555 希望您打开有问题的两个文件?更新了我对此的回答。
  • 它只有在我使用 second_file_dict 中的 for 循环时才有效,但这会导致重复
猜你喜欢
  • 2020-01-05
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多