python - 列表列表 - 仅获取具有独特地址的列表
问题描述
我有这样的列表:
a = [[sth1], [sth2], ...]
其中数组中的许多值a[i] is a[j]
对于某些是相同的 () i, j
。(这是通过 a[i] = a[j] 实现的)。
现在我想获得一个新列表,其中只有独特的列表。
澄清:
a = [[1],[0], [3]]
a[0] = a[1]
我愿意,[a[0],a[2]]
所以没有a[1]
a[1] is a[0]
解决方案
当您复制这样的列表时,重复项将具有相同的内存地址,因此您可以利用它。
import ctypes
a = [[1],[0],[3]]
a[1] = a[0]
print(a) # this will print 1,1,3
a = [ctypes.cast(address, ctypes.py_object).value for address in set([id(sub_list) for sub_list in a])]
print(a) # this will print 1,3
通过使用set
函数,您可以摆脱重复的指针,然后您只需将其从地址转换回列表。如果您不使用a[i] = a[j]
.
推荐阅读
- javascript - R Shiny - 数据表中的子行(行数据未呈现)
- gdb - Debugging llvm with gdb but can't find source code
- svelte - How to pass parameters to on:click in Svelte?
- r - How to extract text between two words using str_extract?
- node.js - TypeError:无法在模型创建时读取未定义的属性“长度”
- java - Java stream iterating over a list most efficient way
- r - 在云端持续运行 R 脚本
- c++ - 如何解决我收到的错误:“意外的令牌 '=' 预期表达式”。使用模板和链表
- html - 使按钮成为蓝条的大小?
- c# - 添加登录视图