我有兩個列表 例如:
A = [1,3,5,7]
B = [1,2,3,4,5,6,7,8]
現在,始終是一個子集B 我想生成第三個列表C: ,其具有的元素是存在於B,而沒有在一個 像
C = [2,4..]
感謝
我有兩個列表 例如:
A = [1,3,5,7]
B = [1,2,3,4,5,6,7,8]
現在,始終是一個子集B 我想生成第三個列表C: ,其具有的元素是存在於B,而沒有在一個 像
C = [2,4..]
感謝
C = sorted(list(set(B) - set(A)))
應該這樣做。
List comprehensions是做到這一點的一種方法:
[x for x in B if x not in A]
如果您使用Python,我建議獲得熟悉列表解析。他們是一個非常強大的工具。
(有人建議使用set
。如果你只關心一個元素是否在集合中,這是一個非常好的主意,注意它不會保留元素的順序;列表理解將會。)
一個簡單的方法做,這是
C = [x for x in B if x not in A]
這將成爲大名單慢,所以這將是更好地使用set
爲A
:
A = set(A)
C = [x for x in B if x not in A]
如果您有多個像這樣的操作,那麼使用set所有的時間可能是最好的選擇。如果A
和B
是一組,你可以簡單地做
C = B - A
>>> set(B) - set(A)
set([8, 2, 4, 6])
或
>>> sorted(set(B) - set(A))
[2, 4, 6, 8]
不需要'list'。 'sorted'總是產生一個列表。 – 2012-03-27 18:45:56