2014-04-17 63 views
0
  • Trenutno_stanje是列表
  • povijest是列出的名單
  • epsilon_okolina的函數,提供列表的字符串(pocetno):刪除列表中的列表重複在Python 2.7

    trenutno_stanje.append(pocetno) 
    trenutno_stanje.extend(epsilon_okolina[pocetno]) 
    povijest.append(trenutno_stanje) 
    

povijest應該是基本清單的列表,但它代碼重複實體 以一種可以避免的方式。

我想知道的是如何刪除列表中的重複字符串? 我想:

for p in povijest: 
    p=list(set(p)) 

但什麼也沒有改變

回答

0
>>> b = [[1,2,3, 3], [3, 2, 4,4]] 
>>> b = [ list(set(x)) for x in b ] 
>>> b 
[[1, 2, 3], [2, 3, 4]] 
+1

這不回答OP的問題。他原來的名單更像是'b = [['''','two'],['two']]' – CoryKramer

+0

Im talkin about >>> b = [['one'],['one'], ['two','three']] >>> ... >> b [['one'],['two','three'], – RubyHora

+0

@Cyber​​你說得對,我是修復。 – Larcend

1

在你for循環你只是重新分配p並沒有真正改變povijest列表。此外,set只適用於可散列類型,並且list當然不是其中之一。將主列表中的列表轉換爲可以進行散列處理的東西(如tuple,這是一個不可變的列表),然後將其轉換爲集合後,您想要使用列表理解。

>>> a = [1, 2, 3, 4] 
>>> b = [1, 2, 3, 4] 
>>> c = [1, 3, 4] 
>>> i1 = [a, b, c] 
>>> set([tuple(x) for x in i1]) 
set([(1, 2, 3, 4), (1, 3, 4)]) 
0

如果你好奇爲了試試這個,

>>> a=[1,2,3,4,5] 
>>> b=[2,3,1,2] 
>>> c=[1,2,3,4,5] 
>>> z=[a,b,c] 
>>> dict((x[0], x) for x in z).values() 
[[1, 2, 3, 4, 5], [2, 3, 1, 2]]