栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

列表分配为[:]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

列表分配为[:]

当你做

lst = anything

您正在将 名称 指向

lst
一个对象。它不会
lst
任何方式
更改用于指向的旧对象,尽管如果没有其他指向该对象的引用,其引用计数将降至零,并且将被删除。

当你做

lst[:] = whatever

您正在遍历

whatever
,创建中间元组,并将元组的每个项目分配给 现有
lst
对象中的索引。这意味着,如果多个名称指向同一个对象,你会看到的变化反映在引用任何名字,就像您使用
append
extend
或任何其他就地操作。

差异的一个示例:

>>> lst = range(1, 4)>>> id(lst)74339392>>> lst = [1, 2, 3]>>> id(lst)  # different; you pointed lst at a new object73087936>>> lst[:] = range(1, 4)>>> id(lst)  # the same, you iterated over the list returned by range73087936>>> lst = xrange(1, 4)>>> lstxrange(1, 4)   # not a list, an xrange object>>> id(lst)   # and different73955976>>> lst = [1, 2, 3]>>> id(lst)    # again different73105320>>> lst[:] = xrange(1, 4) # this gets read temporarily into a tuple>>> id(lst)   # the same, because you iterated over the xrange73105320>>> lst    # and still a list[1, 2, 3]

说到速度,切片分配速度较慢。有关其内存使用情况的更多信息,请参见[PythonSlice分配内存使用)情况。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号