gpt4 book ai didi

python - 为什么 my_list[无 :] and my_list[:None] return my_list?

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:37 27 4
gpt4 key购买 nike

我今天正在编写一个函数来执行此操作:

def foo(n=None):
my_list = generate_some_data()
return my_list if n is None else my_list[:n]

所以我想知道如果 n 会发生什么是None我做了my_list[:n] 。所以我打开了一个 REPL 并发现了这个:

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_list
[1, 2, 3, 4, 5, 6]
>>> my_list[:4]
[1, 2, 3, 4]
>>> my_list[:None]
[1, 2, 3, 4, 5, 6]
>>> my_list[None:]
[1, 2, 3, 4, 5, 6]
>>> my_list[None:None]
[1, 2, 3, 4, 5, 6]

这是为什么呢?索引 None 的幕后发生了什么?没关系,甚至不会引发错误?

最佳答案

因为 my_list[:] 创建列表的副本。 my_list[:None]my_list[None:]myList[None:None] 相当于 my_list[:].

这个 iPython session 应该展示我正在谈论的内容:

In [73]: myList = [1, 2, 3]

In [74]: myListReference = myList

In [75]: myList is myListReference
Out[75]: True

In [76]: myList == myListReference
Out[76]: True

In [77]: myList is myList[:]
Out[77]: False

In [78]: myList == myList[:]
Out[78]: True

In [79]: myList is myList[:None]
Out[79]: False

In [80]: myList == myList[:None]
Out[80]: True

这称为“浅复制”运算符。这允许您修改列表的副本而不修改原始列表。

关于python - 为什么 my_list[无 :] and my_list[:None] return my_list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com