2024-04-25 01:01:29 发布
网友
这些线有什么区别?你知道吗
>>> my_list = [] >>> my_list[:] = [] >>> my_list[:][:] = [] >>> my_list[:][:][:] = [] >>> my_list[:][:][:][:] = [] >>> my_list[:][:][:][:]... = []
my_list = []创建一个新的列表对象,并将名称my_list绑定到它。如果在引用消失之前有任何东西被绑定到my_list。
my_list = []
my_list
my_list[:] = []要求my_list已经绑定到列表对象(或支持片分配的其他类型);该列表对象中包含的所有索引都将替换为右侧另一个列表对象中的索引。在本例中,这两个列表都是空的,因此没有实际的更改,但是如果my_list有任何内容,它们现在就会被清除。
my_list[:] = []
my_list[:][:] = []首先从现有的my_list对象中选择一个切片,生成一个新列表对象,然后对该结果应用步骤2。新的列表对象将再次被丢弃。
my_list[:][:] = []
其余的只是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引用的列表对象本身没有改变。你知道吗
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]
my_list = []
创建一个新的列表对象,并将名称my_list
绑定到它。如果在引用消失之前有任何东西被绑定到my_list
。my_list[:] = []
要求my_list
已经绑定到列表对象(或支持片分配的其他类型);该列表对象中包含的所有索引都将替换为右侧另一个列表对象中的索引。在本例中,这两个列表都是空的,因此没有实际的更改,但是如果my_list
有任何内容,它们现在就会被清除。my_list[:][:] = []
首先从现有的my_list
对象中选择一个切片,生成一个新列表对象,然后对该结果应用步骤2。新的列表对象将再次被丢弃。其余的只是3的变体,选择被应用了多次。你知道吗
为了举例说明,请更改
my_list
中包含的内容。第一步1:my_list
名称被绑定到一个新的列表对象,仍然被other_reference
引用的列表对象本身没有改变。你知道吗步骤2更改列表对象本身:
列表对象中的所有索引都被替换,对同一列表对象的其他引用也会看到更改。你知道吗
第3步不做任何更改,因为副本会被更改:
相关问题 更多 >
编程相关推荐