当前位置: 首页 > 面试题库 >

列表分配为[:]

哈骞仕
2023-03-14
问题内容

之间有什么区别

list = range(100)

list[:] = range(100)

在Python中?

编辑

我应该提到,在该分配列表变量已分配给列表之前:

list = [1, 2, 3]
list = range(100)

要么

list = [1, 2, 3]
list[:] = range(100)

问题答案:

当你做

lst = anything

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

当你做

lst[:] = whatever

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

差异的一个示例:

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

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



 类似资料:
  • 问题内容: 我很想知道是否有一种“ pythonic”的方法来将列表中的值分配给元素?更清楚地说,我要的是这样的东西: 以便: 我正在寻找比手动执行任何其他更好的选择: 问题答案: 只需输入: 当您像上面那样被分配给多个变量时,Python就会使用。 在此扩展中,您还可以解压缩为多个小于使用star运算符的长度的变量:

  • 以下代码编译确定: 但是嵌套列表不会: 这是为什么?如果我需要这样做,“正确”的方法是什么? 用例是我有一个方法,它返回许多不同集合中的一个,其中元素类型本身是泛型的,每个可能的返回值都有不同的定义类型,其中返回值取决于传入的参数。目前,作为一种解决方法,我将结果分配给一个变量,其中类型是带有通配符的集合类型(即<code>列表

  • 问题内容: 我需要具有以下行为的列表 尽管它可以通过字典“模拟”,但并不完全相同。numpy数组可以以这种方式运行,但是我不想为这样的事情导入整个numpy。在自己编写代码之前,请问标准库中是否存在类似的内容。 问题答案: 以下是传递给定示例的最少代码(进行必要的调整:您期望使用怪异的空格和引号,在没有声明的情况下在提示符下显示“无”等): 我想您会想要更多(支持负索引,切片等),但这是您所有示例

  • 问题内容: 我有一个关于将子类列表分配给超类列表的基本问题。 所以我有以下内容: 为什么最后一次分配失败?对不起,新手问题 问题答案: 为了解释这一点,让我用整数代替“ B”,用数字代替“ A”。这只是为了使其更容易解释。 失败的原因是因为nList可以采用任何Number;可以采用Integer;可以采用Double;或者就此而言,可以是Number的任何子类。但是,对于iList并非如此。您不

  • 链表分配解决了连续分配的所有问题。 在链表分配中,每个文件都被视为磁盘块的链表。 但是,分配给特定文件的磁盘块不需要在磁盘上连续存在。 分配给文件的每个磁盘块都包含一个指向分配给同一文件的下一个磁盘块的指针。 优点 链接分配没有外部碎片。 可以使用任何空闲块来满足文件块请求。 只要空闲块可用,文件可以继续增长。 目录条目将仅包含起始块地址。 缺点 随机访问不提供。 指针在磁盘块中需要一些空间。 链

  • 问题内容: 我正在寻找一种将python列表轻松分成两半的方法。 这样,如果我有一个数组: 我将能够得到: 问题答案: 如果需要功能: