繁体   English   中英

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

[英]Deleting duplicates in list of lists in Python 2.7

  • 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))

但这并没有改变

在您的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)])
>>> b = [[1,2,3, 3], [3, 2, 4,4]]
>>> b = [ list(set(x)) for x in b ] 
>>> b
[[1, 2, 3], [2, 3, 4]]

如果您对订单感到好奇,请尝试此操作,

>>> 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]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM