删除Python 2.7中列表列表中的重复项

时间:2014-04-17 12:29:12

标签: python list python-2.7 duplicates

  • Trenutno_stanje是列表
  • povijest是列表清单
  • epsilon_okolina是为字符串(pocetno)提供列表的函数:

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

povijest应该是列表的必要列表,但它在某种程度上代码重复实体 在某种程度上可以避免。

我想知道的是如何删除列表列表中的字符串副本? 我试过了:

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

但它没有改变任何东西

3 个答案:

答案 0 :(得分: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)])

答案 1 :(得分: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]]

答案 2 :(得分: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]]