19 EKİM 2011, ÇARŞAMBA
Nasıl verimli bir şekilde Python iki sırasız listeler (ayarlar) karşılaştırmak için?
a = [1, 2, 3, 1, 2, 3]
b = [3, 2, 1, 3, 2, 1]
a ve b tam olarak aynı unsurları, sadece farklı oldukları için eşit olarak kabul edilebilir.
Şey, benim gerçek listeler nesneleri (benim sınıf örneği), tamsayı değil oluşacaktır.
CEVAP
19 EKİM 2011, ÇARŞAMBA
O(n):() Karşıen iyi yöntem ise nesneleri hashable ():
def compare(s, t):
return Counter(s) == Counter(t)
O(n log n):() sıralanmışyöntem eğer nesneleri hiç değilse) bir sonraki en iyi
def compare(s, t):
return sorted(s) == sorted(t)
O(n * n): Eğer nesneleri ne hashable, ne de hiç, eşitlik kullanabilirsiniz:
def compare(s, t):
t = list(t) # make a mutable copy
try:
for elem in s:
t.remove(elem)
except ValueError:
return False
return not t
Bunu Paylaş:
Nasıl verimli bir şekilde anahtarları/...
Nasıl verimli bir şekilde Gidip dizele...
Nasıl Python nesne türü karşılaştırmak...
Nasıl bir dosya a 'akıllı' ş...
Nasıl bir sütun değeri tekrarlarını SQ...