杂例
Topic source[-i for i in L[::2]] 是列表生成式生成的list, [0, -2, -4, -6, -8]. 然后切片操作符相当于循环对L赋值,就是[0, 1, -2, 3, -4, 5, -6, 7, -8, 9]了
原来(L[::2]) 结果是[0, 2, 4, 6, 8] L[::2] = [-i for i in L[::2]] 的结果是把(L[::2])对应的值的取负,返回[0, -2, -4, -6, -8] 那么原来的L是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 把L[::2]取负后,L就变成了[0, 1, -2, 3, -4, 5, -6, 7, -8, 9] :)
L = list(range(10)) L [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] L[::2] [0, 2, 4, 6, 8]
L[::2] = [-i for i in L[::2]] 等式右边等同于 for i in L[::2] -i 所以等式右边是把L[::2]里的每个元素取反,再合成一个新的list,[0, -2, -4, -6, -8] 那就是L[::2] = [0, -2, -4, -6, -8] 就是对L[::2]赋值,L其余值不变 则L = [0, 1, -2, 3, -4, 5, -6, 7, -8, 9]
- 1
Robert_LoL
结果是
[0, 11, 22, 33, 44, 55, 2, 3, 4, 5, 6, 7, 8, 9] with len = 14
。 好奇做了这个例子。不过,用
L[::2] = []
或者L[::2] = [1, 2, 3]
这样不一样尺寸的赋值会出错。试了试
这个是可以的,结果是
[0, 1, -2, 3, -4, 5, -6, 7, -8, 9] with len = 10
。