我有一個列表類似如下得到一組二維表的蟒蛇
t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]]
我需要一套擺脫這種所以輸出會像
t=[[1, 7], [3, 7], [5, 8]]
我試圖用t=set(t)
但它沒有工作
我有一個列表類似如下得到一組二維表的蟒蛇
t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]]
我需要一套擺脫這種所以輸出會像
t=[[1, 7], [3, 7], [5, 8]]
我試圖用t=set(t)
但它沒有工作
如果你不關心的順序,你可以使用map()
富先轉換內部lists
到tuples
nction,然後將它們轉換爲set
然後回到list
。
示例 -
>>> t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]]
>>> t = list(set(map(tuple,t)))
>>> t
[(3, 7), (5, 8), (1, 7)]
正是我一直在尋找 – zeref
高興它爲你工作,會建議你接受的答案,最好的一個,你認爲,將有助於誰也有類似的問題和社會作爲一個整體的人。 –
的問題是,列表是可變的,因此誰也不能把一套了他們,因爲他們可能會改變。因此你想要使用不可變的元組。因此,你可以使用:
list(set([tuple(ti) for ti in t]))
而且如果你不關心順序:
def func(items):
seen = set()
for item in items:
item = tuple(item)
if item not in seen:
yield item
seen.add(item)
,或者你只是子類列表,並覆蓋追加所以沒有重複可以在第一時間加入:
class T(list):
def append(self, item):
if item not in self:
list.append(self, item)
這將是像這樣使用:
>>> t = T([[1, 7], [3, 7], [5, 8]])
>>> t
[[1, 7], [3, 7], [5, 8]]
>>> t.append([1, 7])
>>> t
[[1, 7], [3, 7], [5, 8]]
集合只能包含不可變元素。 list
是可變類型,則需要將項目轉換爲不可變的類型,例如tuple
:
set(map(tuple, t))
將項目轉換爲元組並將它們傳遞給'OrderedDict.fromkeys',最後再次將元組鍵轉換爲列表。 (如果爲了事項) –