Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表列表-仅获取具有不同地址的列表_Python_List_Pointers - Fatal编程技术网

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]]
中没有重复项