2017-05-02 10 views
1

友人、私は以下のように2つのリストを引く助けが必要です、これに親切なサポートをありがとう。私はlistCどのようにPythonで2つのリストを引く

Listc=['b','b','c','h'] 

として必要

ListA=['a','b','b','b','c','c','d','e','f','f','g','h'] 
ListB=['a','b','c','d','e','f','f','g'] 

回答は、私はセットでこれを試してみましたが、私はなります上記の例の

listC=[set(listA) - set(listB)] 

回答以下のように例をexpected.Triedとしての答えを得ていませんbe

['h']

誰かが私に助けてくれたら大丈夫です。

ListB内の項目がそれを削除する場合は、リストを反復処理するために、このリスト内包表記を使用することができます

答えて

1

ために作成するオーバーヘッドの、リストを作成していないリストの内包を使用して
>>> ListA=['a','b','b','b','c','c','d','e','f','f','g','h'] 
>>> ListB=['a','b','c','d','e','f','f','g'] 
>>> 
>>> [i for i in ListA if i not in ListB or ListB.remove(i)] 
['b', 'b', 'c', 'h'] 

をそしてリストを拡張すると、リスト内包は古いループより速いので、上記のリストの理解はこれと同じです:

r=[] 
for i in ListA: 
    if i in ListB: 
     ListB.remove(i) 
    else: 
     r.append(i) 
print(r) 
+0

ありがとう、これは私が期待したものです。 それがどのように働きますか。私はPython – Biginor

+0

@Biginorに新しいので、私は私の答えを編集して、見てください。 – McGrady

+0

ありがとうと本当にあなたのよく説明に感謝します。 – Biginor

関連する問題