从lambda分配值到Python列表切片
我知道有一些特殊的方法可以用来表示通常用运算符执行的操作,比如说 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])