TL; DR:
ÇÖZÜM (1)
import numpy as np
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
ÇÖZÜM (2) Sıralı bir liste istiyorsunuz
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
main_list = setdiff_sorted(list_2,list_1)
AÇIKLAMALAR:
(1) Sen NumPy en kullanabilirsiniz setdiff1d
( array1
, array2
, assume_unique
= False
).
assume_unique
kullanıcıya dizilerin ZATEN EŞSİZ OLUP OLMADIĞINI sorar.
Eğer False
öyleyse, önce benzersiz öğeler belirlenir.
Eğer True
işlev, elemanların zaten benzersiz olduğunu varsayacak VE işlevi benzersiz öğeleri belirlemeyi atlayacaktır.
Bu verimleri benzersiz değerler array1
o değil de array2
. assume_unique
olduğu False
varsayılan olarak.
Benzersiz öğelerle ilgileniyorsanız (Chinny84'ün yanıtına göre ), o zaman basitçe kullanın (burada assume_unique=False
=> varsayılan değer):
import numpy as np
list_1 = ["a", "b", "c", "d", "e"]
list_2 = ["a", "f", "c", "m"]
main_list = np.setdiff1d(list_2,list_1)
# yields the elements in `list_2` that are NOT in `list_1`
(2)
Cevapların sıralanmasını isteyenler için özel bir fonksiyon yaptım:
import numpy as np
def setdiff_sorted(array1,array2,assume_unique=False):
ans = np.setdiff1d(array1,array2,assume_unique).tolist()
if assume_unique:
return sorted(ans)
return ans
Cevabı almak için şunu çalıştırın:
main_list = setdiff_sorted(list_2,list_1)
YAN NOTLAR:
(a) Çözüm 2 (özel işlev setdiff_sorted
) bir liste döndürür ( çözüm 1'deki bir diziye kıyasla ).
(b) Öğelerin benzersiz olup olmadığından emin değilseniz, NumPy'nin varsayılan ayarını setdiff1d
hem A hem de B çözümlerinde kullanın. Bir komplikasyona örnek ne olabilir? (C) notuna bakın.
İki listelerden birini ise (c) herşey daha farklı olacak değil benzersiz.
De ki list_2
benzersiz değil: list2 = ["a", "f", "c", "m", "m"]
. Olduğu list1
gibi tutun : Verimlerin list_1 = ["a", "b", "c", "d", "e"]
varsayılan değerini ayarlama (her iki çözümde de). ANCAK, eğer ayarlarsanız , her iki çözüm de verir . Neden? Bunun nedeni, kullanıcının öğelerin benzersiz olduğunu varsaymasıdır). Dolayısıyla TUTMAK DAHA İYİassume_unique
["f", "m"]
assume_unique=True
["f", "m", "m"]
assume_unique
varsayılan değerine. Her iki cevabın sıralandığına dikkat edin.
pitondizi
list_2
hiçbir yerde görünmeyenlist_1
öğeleri veyalist_2
uygulamasında aynı dizinde bulunmayan öğelerilist_1
mi arıyorsunuz?