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))
但它没有改变任何东西
答案 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]]