python中的列表赋值

2024-04-25 01:01:29 发布

您现在位置:Python中文网/ 问答频道 /正文

这些线有什么区别?你知道吗

>>> my_list = []
>>> my_list[:] = []
>>> my_list[:][:] = []
>>> my_list[:][:][:] = []
>>> my_list[:][:][:][:] = []
>>> my_list[:][:][:][:]... = []

Tags: mylist区别
1条回答
网友
1楼 · 发布于 2024-04-25 01:01:29
  1. my_list = []创建一个新的列表对象,并将名称my_list绑定到它。如果在引用消失之前有任何东西被绑定到my_list

  2. my_list[:] = []要求my_list已经绑定到列表对象(或支持片分配的其他类型);该列表对象中包含的所有索引都将替换为右侧另一个列表对象中的索引。在本例中,这两个列表都是空的,因此没有实际的更改,但是如果my_list有任何内容,它们现在就会被清除。

  3. my_list[:][:] = []首先从现有的my_list对象中选择一个切片,生成一个新列表对象,然后对该结果应用步骤2。新的列表对象将再次被丢弃。

其余的只是3的变体,选择被应用了多次。你知道吗

为了举例说明,请更改my_list中包含的内容。第一步1:

>>> my_list = [1, 2, 3]
>>> other_reference = my_list
>>> other_reference is my_list
True
>>> my_list = ['new', 'list']
>>> my_list is other_reference
False
>>> other_reference
[1, 2, 3]

my_list名称被绑定到一个新的列表对象,仍然被other_reference引用的列表对象本身没有改变。你知道吗

步骤2更改列表对象本身:

>>> my_list = [1, 2, 3]
>>> other_reference = my_list
>>> my_list[:] = [4, 5]
>>> my_list is other_reference
True
>>> other_reference
[4, 5]
>>> my_list
[4, 5]

列表对象中的所有索引都被替换,对同一列表对象的其他引用也会看到更改。你知道吗

第3步不做任何更改,因为副本会被更改:

>>> my_list = [1, 2, 3]
>>> other_reference = my_list
>>> my_list[:][:] = [4, 5]
>>> my_list is other_reference
True
>>> my_list
[1, 2, 3]
>>> my_list[:][:][:] = ["won't", 'matter']
>>> my_list
[1, 2, 3]

相关问题 更多 >