2019-05-20

2019-05-23  本文已影响0人  paxliverrr

其他对象的切片操作

前面的切片操作说明都以list为例进行说明,但实际上可进行的切片操作的数据类型还有很多,包括元组、字符串等等。

>>>foriinrange(1,100)[2::3][-10:]:

print(i)

就是利用range函数生成1-99的整数,然后取3的倍数,再取最后十个。

常用切片操作

以列表:a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 为说明对象

1.取偶数位置

>>>b = a[::2][0,2,4,6,8]

2.取奇数位置

>>>b = a[1::2][1,3,5,7,9]

3.拷贝整个对象

>>>b = a[:]#★★★★★

>>>print(b)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>print(id(a))#41946376

>>>print(id(b))#41921864

>>>b = a.copy()

>>>print(b)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>print(id(a))#39783752

>>>print(id(b))#39759176

需要注意的是:[:]和.copy()都属于“浅拷贝”,只拷贝最外层元素,内层嵌套元素则通过引用,而不是独立分配内存。

>>>a = [1,2,['A','B']]

>>>print('a={}'.format(a))

>>>b = a[:]

>>>b[0] =9#修改b的最外层元素,将1变成9

>>>b[2][0] ='D'#修改b的内嵌层元素

>>>print('a={}'.format(a))

>>>print('b={}'.format(b))

>>>print('id(a)={}'.format(id(a)))

>>>print('id(b)={}'.format(id(b)))

a=[1,2, ['A','B']]#原始a

a=[1,2, ['D','B']]#b修改内部元素A为D后,a中的A也变成了D,说明共享内部嵌套元素,但外部元素1没变。

b=[9,2, ['D','B']]#修改后的b

id(a)=38669128

id(b)=38669192

4.修改单个元素

>>>a[3] = ['A','B']

[0,1,2, ['A','B'],4,5,6,7,8,9]

5.在某个位置插入元素

>>>a[3:3] = ['A','B','C'][0,1,2,'A','B','C',3,4,5,6,7,8,9]>>>a[0:0] = ['A','B']['A','B',0,1,2,3,4,5,6,7,8,9]

6.替换一部分元素

>>>a[3:6] = ['A','B'][0,1,2,'A','B',6,7,8,9]

作者:马尔代夫Maldives

链接:https://www.jianshu.com/p/15715d6f4dad

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇下一篇

猜你喜欢

热点阅读