簡體   English   中英

如何比較 python 中的兩個列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM