[英]How do I compare two lists in python
我有两个列表。 第一个列表只包含字符串(基本上,它包含外来词),第二个列表只包含字符串(它由用户已经知道的词组成)。 我想比较两个列表并从列表 1 中删除列表 2 中的单词。我该怎么做?
我的尝试:
all_words = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
def compare_lists (all_words):
known_words = ['A', 'B', 'C', 'D', 'E',]
for i in all_words:
if i in known_words:
all_words.remove(i)
return all_words
unknown_words = compare_lists(all_words)
print(unknown_words)
预期 output:F、G、H、I。
长话短说,代码不起作用。 我不能完全确定它的作用,但它似乎只从“all_words”列表中删除了一个词(可能,代码根本不起作用,但这只是我的印象)。
先感谢您。
您的代码的问题在于您正在删除正在迭代的同一数组中的元素。 你可以试试这个:
all_words = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
def compare_lists (all_words):
known_words = ['A', 'B', 'C', 'D', 'E']
temp = all_words[:]
for i in temp:
if i in known_words:
all_words.remove(i)
return all_words
unknown_words = compare_lists(all_words)
Output:
['F', 'G', 'H', 'I']
您可以使用set()
https://docs.python.org/3/library/functions.html#func-set :
例如:
s1 = set(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'])
s2 = set(['A', 'B', 'C', 'D', 'E', 'F'])
final_words = s1 - s2
print(final_words)
# {'H', 'I', 'G'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.