2017-02-05 48 views
1

這裏是Python的新手。我已經想通了,這是相當瑣碎檢查列表使用檢查所有元素是否都是唯一且不可用的列表

if len(lst) > len(set(lst)) 

但我會如何處理這樣的情況下具有獨特的所有元素?

all_different([[],[],[],[]]) #False 

我不能在這個例子中使用set()函數。我理解我可能會如何(而非效率地)在Java中嵌套for循環。但不知道我如何在Python中實現這一點。

回答

0

你不能散列列表,因爲它們是可變的,但是你可以將它們轉換爲元組,然後將它們散列。像這樣:set(tuple(elem) for elem in lst)

您的比較將隨即成爲:

myset = set(tuple(elem) for elem in lst) 
if len(lst) > len(myset) 
+0

你應該扁平化'lst'的'if' –

+0

@Marcos扁平化是不恰當的,但如果該列表是不平坦的,然後我們需要遞歸處理它以修正內部列表。 –

+0

這篇文章的第二個例子讓我認爲嵌套列表是一種可能性(事實上,他們在哪裏遇到困擾OP的情況)。 –

相關問題