比较两个列表并找到唯一值

时间:2018-08-11 10:55:35

标签: python

我刚开始使用Python,除了SQL之外,没有任何实际的编程经验。

我的任务:

  1. 找到在偶数和奇数行上都存在的单词。
  2. 仅在偶数行上存在的单词
  3. 仅出现在奇数行上的单词

所有标点符号和大写字母均已删除,因此我们不必为此担心。但是,同一行中有几个字

输出应如下所示

Common words on both lines: ['I', 'the', 'am', 'all', 'as', ...] 
Only even lines : ['yellow', 'christmas', 'smell', ...] 
Only odd lines: ['yours', 'war', 'may', 'remote', ...]

我开始喜欢

evens, odds = set(), set()
with open('textfile.txt') as f:
    for index, row in enumerate(f):
        if index % 2 == 0:
            evens.update(row.split())
        else:
            odds.update(row.split())
commons = sorted(evens & odds)

我应该从这里继续吗?我的主要问题是打印出唯一的偶数。一个小问题是将我的下位列表换行。

3 个答案:

答案 0 :(得分:3)

使用差异运算符boot.img

-

答案 1 :(得分:0)

如果您想定期使用python,则列表理解是一个重要的学习概念。

因此您可以尝试提出问题陈述1

combine=['I', 'the', 'am', 'all', 'as','yellow'] 
even_line=['yellow', 'christmas', 'smell']
odd_line=['yours', 'war', 'may', 'remote','yellow']

words_in_both_odd_even=[i for i in combine for j in even_line for k in odd_line if (i==j and i==k)]

words_in_both_odd_even

对于问题陈述2:

words_in_even_line=[i for i in combine for j in even_line if (i==j)]
words_in_even_line

对于问题陈述3:

words_in_odd_line=[i for i in combine for k in odd_line if (i==k)]

words_in_odd_line

如果您要在以上任何一个问题语句输出中寻找唯一值-,则可以使用set(words_in_both_odd_even)set(words_in_even_line)set(words_in_odd_line)

答案 2 :(得分:0)

首先,要了解偶数和奇数行中的常见单词,您需要获取两列偶数和奇数行的单词,这就是如何将它们制成两个列表的原因。

enter image description here

然后您必须找到两个列表中存在的常用单词。如果该单词是两个列表中的通用单词,请从两个列表中删除该单词并将其添加到新的通用单词列表中。

enter image description here