python的slice切片操作

记录一下python的切片操作~~

a = [1,2,3,4,5,6,7,8]
#--------基础操作----------
print(a[:]) #输出全部序列  [1, 2, 3, 4, 5, 6, 7, 8]
print(a[:4]) #输出第0-3号,不包括4  [1, 2, 3, 4]
print(a[:-1])#不包括最后一个  [1, 2, 3, 4, 5, 6, 7]
print(a[4:])#从第4号往后  [5, 6, 7, 8]
print(a[-4:])#从倒数第四个往后 [5, 6, 7, 8]
print(a[3:-3])  #[4, 5]

#---------两个特殊用法-----------
print(a[-0:])  #这个要记住,得到原列表的一份拷贝 [1, 2, 3, 4, 5, 6, 7, 8]
print(a[:]) #得到的也是源列表的一份拷贝

#---------高级操作-----------
a[start:end:stride] #可以实现步进式切割,但是在单次切片操作内,不要同时指定start、end和stride,否则会使得代码可读性变差,如果一定要配合使用的话,可以先做步进式切片,然后在切割结果中做二次切割。
print(a[::2]) #输出偶数索引的值  [1, 3, 5, 7]
print(a[1::2]) #输出奇数索引的值  [2, 4, 6, 8]
print(a[::-1]) #采用-1做步进值,可以输出a的反转序列 [8, 7, 6, 5, 4, 3, 2, 1]
print(a[::-2]) #从尾部开始,每隔两个元素取一个 [8, 6, 4, 2]

python的多重循环写法(很神奇啊有木有):

a = [[1,2,3],[4,5,6],[7,8,9]]
flat =[x for row in a for x in row]
print (flat) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
squared = [[x**2 for x in row] for row in a]
print(squared)  #[[1, 4, 9], [16, 25, 36], [49, 64, 81]]

猜你喜欢

转载自blog.csdn.net/aaon22357/article/details/83794094