gpt4 book ai didi

python - 需要解释此代码

转载 作者:行者123 更新时间:2023-11-28 19:54:53 25 4
gpt4 key购买 nike

n1, n2, n3 = (n + [None]*2)[:3]

我只是非常简单地想知道这是做什么的,它是如何工作的。这是否类似于列表理解,只要我提供一个列表或具有足够变量的迭代器,它就会分配 n1 = iterable[0] 吗?

另外,为什么括号末尾的 [:3] 会限制长度?

我明白为什么 [None] 在那里,以防万一 n 的长度小于 3 但有人可以给我更多信息吗?

我只编写了大约一个星期的代码,需要一些解释方面的帮助。

最佳答案

这取 n 的前三个元素,如果少于三个元素,则用 None 填充。

(n + [None]*2)[None, None] 的列表连接到列表 n,并且当您例如,[:3] 获取结果列表的前三项。然后将这三项解包到变量 n1n2n3

例如:

In [1]: n = ['One', 'Two']

In [2]: n1, n2, n3 = (n + [None]*2)[:3]

In [3]: print n1
One

In [4]: print n2
Two

In [5]: print n3
None

但是如果 n 中有三个或更多项目,您只需将这三个项目作为 n1n2n3

正如其他人在下面指出的那样,如果 n 是空列表,此代码将失败,因为那时 (n + [None]*2) 将只有两个项目在里面。它可以切片 OK:(n + [None]*2)[:3] 返回包含这两项的列表,但随后解包为三个变量失败。在这种情况下产生的 ValueError 是否是要引发的预期异常,或者代码是否应该是 n1, n2, n3 = (n + [None]*3)[:3] 以便将 None 返回到每个变量中,只有原始程序员才知道。这通常需要在代码中添加注释。

关于python - 需要解释此代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904707/

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