切片操作-Python学习笔记

切片操作

切片适用于列表、字符串、range对象等类型

1.[begin(默认为0):end(不包括该位置,默认为列表长度):step(默认为1)] 步长step省略时,可以顺便省略最后一个冒号.
2.可以通过切片来截取列表中的任何部分,得到一个新列表,也可以来修改和删除列表中的元素,甚至可以通过切片操作作为列表对象增加元素。

3.基本操作

aList=[3,5,7]
print(aList[len(aList):]) #[]
aList[len(aList):]=[9]
print(aList) #[3,5,7,9]
aList[:3]=[1,2,3]
print(aList) #[1,2,3,9]
aList[:3]=[]
aList=list(range(10)) 
print(aList) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
aList[::2]=[0]*(len(aList)//2)
print(aList) #[0, 1, 0, 3, 0, 5, 0, 7, 0, 9]
alist = [1, 2, 1, 2, 1, 1, 1]
for i in alist[::]:
    if 1 == i:
        alist.remove(i)
print(alist)
 
 
blist = [1, 2, 1, 2, 1, 1, 1]
for j in range(len(blist)-1, -1, -1): # 从后往前删除
    if blist[i] == 1:
        del blist[i]
 
print(blist)

# 切片示例
# 1.截取列表内容
a_l = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
print(a_l[::1])  # 1.返回包含所有元素的新列表
print(a_l[::-1])  # 2.逆序所有元素
print(a_l[::2])  # 3.偶数位置,隔一个取一个
print(a_l[1::2])  # 4.奇数位置,隔一个取一个
print(a_l[3::])  # 5.输出下标3开始的所有元素
print(a_l[3:6])  # 6.下标[3, 6)之间的所有元素
print(a_l[100:])  # 7.返回空列表
# print(a_l[100])  # 8.直接下标访问会越界
 
# 2.原地修改列表内容
b_l = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
print(len(b_l))
b_l[len(b_l):] = [1111]  # 9.在尾部追加元素
print(b_l)
b_l[:3] = [2222, 2222, 2222]  # 10.替换前3个元素
print(b_l)
b_l[:3] = []  # 11.删除前3个元素
print(b_l)
b_l[::2] = [3]*4  # 12.替换偶数位置上的元素为3(两个元素个数必须一样多)
print(b_l)
 
# 3.使用del与切片结合来删除列表元素
c_l = [3, 5, 7, 9, 11, 13, 15, 17, 19]
del c_l[:3]  # 13.删除前三个元素
print(c_l)
del c_l[::2]  # 14.删除偶数位置上的元素
print(c_l)

4.浅复制(切片返回的是列表元素的浅复制)

aList=[3,5,7]
bList=aList
print(bList) #[3, 5, 7]
aList=bList
print(aList is bList) #True
id(aList)
id(bList)
aList=[3,5,7]
bList=aList[::]
print(aList==bList) #True
print(aList is bList) #False
print(id(aList)==id(bList))  #False

5.注意事项(转自https://blog.csdn.net/admin_maxin/article/details/80312171)

1.索引有正索引(0, 1, 3, …)和负索引(-1, -2, …)

2.步长为-1时表示逆序输出

3.注意:切片操作不会因为下标越界而抛出异常,而是在简单地在列表尾部级截断或返回一个空列表,代码有更强的健壮性

4.切片产生的时一个新对象(列表),而不是原来列表对应内存空间的引用

你可能感兴趣的:(python,切片)