从lambda分配值到Python列表切片

3 投票
2 回答
2088 浏览
提问于 2025-04-16 12:11

我知道有一些特殊的方法可以用来表示通常用运算符执行的操作,比如说 int.__add__ 是用来表示加法的,object.__eq__ 是用来表示相等比较的等等。其中有一个方法叫 list.__setitem,它可以用来给列表的某个元素赋值。不过,我现在需要一个函数,能够把一个列表的值放到另一个列表的某个切片里。

简单来说,我想找到一个和 some_list[2:4] = [2, 3] 等价的表达方式。

2 个回答

0

这要看你使用的Python版本。对于3.2版本,__setitem__这个方法可以解决问题:

需要注意的是,切片操作主要是通过以下三种方法来完成的。像这样的调用: a[1:2] = b 实际上会被转换成 a[slice(1, 2, None)] = b 以此类推。如果切片中缺少的项,默认会用None来填充。

8

这一行代码

some_list[2:4] = [2, 3]

也会调用 list.__setitem__() 方法。不过,这里传入的不是一个索引,而是一个 slice 对象。换句话说,这一行代码的意思和下面这行是一样的:

some_list.__setitem__(slice(2, 4), [2, 3])

撰写回答