2012-03-27 67 views

回答

2
C = sorted(list(set(B) - set(A))) 

應該這樣做。

+1

不需要'list'。 'sorted'總是產生一個列表。 – 2012-03-27 18:45:56

3

List comprehensions是做到這一點的一種方法:

[x for x in B if x not in A] 

如果您使用Python,我建議獲得熟悉列表解析。他們是一個非常強大的工具。

(有人建議使用set。如果你只關心一個元素是否在集合中,這是一個非常好的主意,注意它不會保留元素的順序;列表理解將會。)

3

一個簡單的方法做,這是

C = [x for x in B if x not in A] 

這將成爲大名單慢,所以這將是更好地使用setA

A = set(A) 
C = [x for x in B if x not in A] 

如果您有多個像這樣的操作,那麼使用set所有的時間可能是最好的選擇。如果AB是一組,你可以簡單地做

C = B - A 
3
>>> set(B) - set(A) 
set([8, 2, 4, 6]) 

>>> sorted(set(B) - set(A)) 
[2, 4, 6, 8]