开发者社区> 问答> 正文

如何在Python中捕获对列表项的直接引用以提高速度?

在Python中,我可以直接引用某个列表中某个项的值,例如my_list[0][0]?

我使用的是Python 3.7.2。

这个:direct = my_list[0][0]不起作用; 虽然它们最初都指向同一个对象,但在my_list[0][0]更改时,Python会更改列表对象。direct指向具有旧值的原始对象,并my_list[0][0]指向具有新值的新对象。my_list[0][0]即使在值更改后,我也在寻找一种直接指向值的方法,而不必调用调用的开销my_list[0][0]。(这可能不适用于列表?)

代码确认以上内容:

my_list = [[0, 1], [0, 1]]

direct = my_list[0][0]

print(id(direct)) print(direct) print(id(my_list[0][0])) print(my_list[0][0])

my_list[0][0] = 10

print(id(direct)) print(direct) print(id(my_list[0][0])) print(my_list[0][0])

展开
收起
游客6qcs5bpxssri2 2019-09-07 22:30:40 914 0
2 条回答
写回答
取消 提交回答
  • python是采用引用计数, 值改变了内存地址改变,

    2019-11-22 09:58:53
    赞同 展开评论 打赏
  • 不可能。Python引用不像那样工作。引用始终引用对象,而不引用其他引用或对象。

    如果你永远不会重新分配list[0],那么你可以保存对该子列表的引用,所以你只需要这样做sublist[0]:

    sublist = list[0]

    ...

    do_whatever_with(sublist[0]) # instead of list[0][0]

    另外,不要调用你的变量list。该list类型在该名称上有dibs,当你想要调用list某些东西时,你会感到困惑。

    2019-09-07 22:31:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载