Why can't I assign an arbitrary iterable to an extended slice whose step is -1?

蹲街弑〆低调 提交于 2019-12-01 04:46:50

I think that creating an extended slice whose step is 1 effectively acts like a regular slice rather than an extended slice.

Extended slices do not allow you to change the length of the sequence, as noted here

If you have a mutable sequence such as a list or an array you can assign to or delete an extended slice, but there are some differences between assignment to extended and regular slices. Assignment to a regular slice can be used to change the length of the sequence. Extended slices aren't this flexible. When assigning to an extended slice, the list on the right hand side of the statement must contain the same number of items as the slice it is replacing.

As for why it's works this way, I can only guess it is because of the cases where there is no obvious behaviour. Take this example:

u = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
u[0:8:3] = [ 10, 11 ]

How would you expect this to work? I guess you could just replace 1 & 4 with 10 & 11, but what about 7? Do you leave it? Delete it? Delete the entire rest of the sequence past 7? Maybe it's just me, but this case doesn't seem too clear cut. Which I would assume is why this sort of behaviour just wasn't allowed for extended slices.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!