gpt4 book ai didi

python - 在 [任何以前的版本] 之前的 Python 中这可能吗

转载 作者:行者123 更新时间:2023-12-05 08:16:48 25 4
gpt4 key购买 nike

我依稀记得这个东西很久以前就可以用了有谁知道这段代码以前是否真的有效?如果自任何更新的 python 版本以来不推荐使用它?

代码

# My python version is 3.8

lst = ['a', 'b', 'c', 'd']
lst[0:3] = 100
print(lst)

电流输出

TypeError: can only assign an iterable

预期输出

[100, 'd']

谢谢

最佳答案

这在任何版本中都不起作用,因为切片赋值需要一个类似序列的对象来赋值。

它不起作用的原因是因为您需要将它转换为单项序列,如下所示:

lst = ['a', 'b', 'c', 'd']
lst[:3] = [100]
print(lst)

或者用一个元组:

lst = ['a', 'b', 'c', 'd']
lst[:3] = 100,
print(lst)

因为 lst[:3] 给出了一个序列对象,你分配给它的对象也需要是一个序列对象。

这在 python 的任何版本中都是不可能的...因为不使用单个项目序列进行索引是唯一的方法。像这样:

lst = ['a', 'b', 'c', 'd']
lst[3] = 100
print(lst)

但是所有 python 版本都需要切片序列。

documentation for python 3中所述, documentation of python 2 :

The length of the slice may be different from the length of the assigned sequence, thus changing the length of the target sequence, if the target sequence allows it.

正如我在 Python 1.4 的文档中看到的那样:

If the target is a slicing: The primary expression in the reference is evaluated. It should yield a mutable sequence object (e.g. a list). The assigned object should be a sequence object of the same type.

此文档于 1996 年发布。

所以 25 年来,这不可能,python 文档是在 1996 年,但实际上 python 1 是在 1994 年开始的。

所有版本文档引用都是相同的。

关于python - 在 [任何以前的版本] 之前的 Python 中这可能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68993947/

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