2014-04-17 40 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]]