Python 列表列表-仅获取具有不同地址的列表
我有这样的清单:Python 列表列表-仅获取具有不同地址的列表,python,list,pointers,Python,List,Pointers,我有这样的清单: a = [[sth1], [sth2], ...] 其中,对于某些i,j,数组中的许多值是相同的(a[i]是a[j])。 (这是通过a[i]=a[j]实现的) 现在我想得到一个新的列表,里面只有一些与众不同的列表 澄清: a = [[1],[0], [3]] a[0] = a[1] 我想要[a[0],a[2]],因此没有a[1],因为a[1]是一个[0],您可以尝试此操作,但可能需要一段时间才能创建很长的列表 a=[[1]、[2]、[2]、[3]] set_a=set(x代
a = [[sth1], [sth2], ...]
其中,对于某些i,j
,数组中的许多值是相同的(a[i]是a[j]
)。
(这是通过a[i]=a[j]实现的)
现在我想得到一个新的列表,里面只有一些与众不同的列表
澄清:
a = [[1],[0], [3]]
a[0] = a[1]
我想要
[a[0],a[2]]
,因此没有a[1]
,因为a[1]是一个[0]
,您可以尝试此操作,但可能需要一段时间才能创建很长的列表
a=[[1]、[2]、[2]、[3]]
set_a=set(x代表l代表a中的x代表l中的x)
new_a=[[i]表示集合中的i]
打印(新的)
>>> [[1], [2], [3]]
当您复制这样的列表时,副本将具有相同的内存地址,因此您可以利用它
导入ctypes
a=[[1]、[0]、[3]]
a[1]=a[0]
打印(a)#这将打印1,1,3
a=[ctypes.cast(地址,ctypes.py_对象)。集合中地址的值([id(sub_列表)表示a中的sub_列表])
打印(a)#这将打印1,3
通过使用
set
函数,您可以去掉重复的指针,然后将其从地址转换回列表。如果不使用a[i]=a[j]
当然不行,因为列表是不可散列的。是的,它会变慢,而且不关心不同的地址。那么,重复是什么意思?因为在a=[[1]、[0]、[3]]
中没有重复项