0
点赞
收藏
分享

微信扫一扫

python3中的切片

一·切片的相关知识

1·概念在Python中, 切片 (slice) 是对序列型对象 (如 list, string, tuple)的一种高级索引方法。简单来说就是如果我们需要对象中数据的哪一段,那切片就我们相当于用两刀切割出我们想要的部分,一刀切开始(开始的值要取),另外一刀切结尾(结尾的值不取)。

2·语法变量名[开始位置下标:结束位置下标:步长],这里的开始位置下标就是切割开始值的索引值,结束位置下标就是切割结束值的索引值,步长其实就相当于走楼梯,步长为1时每个阶梯都踩,那么范围内的每个值都取,然后步长为2时,相当于一步走两个阶梯,中间空了一个没踩,那么在范围内取值也会空一个。比如:[1,2,3,4,5]步长为2时就取[1,3,5]。

3·索引:索引咱们有正索引和负索引,索引从左到右都是从小到大排列的,以一个列表list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]来举例:

1

2

3

"A"

"Y"

"O"

"小涛"

“谢谢观看”

正索引

0

1

2

3

4

5

6

7

负索引

-8

-7

-6

-5

-4

-3

-2

-1

以上就是该列表里面的值所一一对应的正负索引,也就是值的下标。

二·切片操作(以列表为例)

1·切割出单个数据

list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]
print(list1[2]) # 只需要直接指定索引值就可输出
# 输出结果:3
print(list1[-2]
# 输出结果:小涛

2·切割出指定段的数据

升序(步长为正,开始位置下标小于结束位置下标)

list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]

# 步长不写时默认为1,开始值取,结束值不取(左闭右开)
print(list1[2:7])
# 输出结果:[3, 'A', 'Y', 'O', '小涛'] # 数据不包含结束位置下标对应的数据

# 结束位置下标没写时,直接输出至列表最后一个值
print(list1[2:])
# 输出结果:[3, 'A', 'Y', 'O', '小涛', '谢谢观看']

# 开始位置下标没写时,默认为0
print(list1[:7])
# 输出结果:[1, 2, 3, 'A', 'Y', 'O', '小涛']

# 取负索引一样的
print(list1[-7:-2])
# 输出结果:[2, 3, 'A', 'Y', 'O']

print(list1[-7:])
# 输出结果:[2, 3, 'A', 'Y', 'O', '小涛', '谢谢观看']

print(list1[:-2])
# 输出结果:[1, 2, 3, 'A', 'Y', 'O']

# 步长为2时,空一个不取
print(list1[2:7:2])
# 输出结果:[3, 'Y', '小涛']

降序(步长为负,开始位置下标大于结束位置下标)

list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]

# 步长为负时,会反着取,也就是降序
print(list1[7:2:-2])
# 输出结果:['谢谢观看', 'O', 'A']

# 这里-9下标超出没有关系
print(list1[-2:-9:-1])
# 输出结果:['小涛', 'O', 'Y', 'A', 3, 2, 1]

3·切割出全部数据

升序

list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]
print(list1[:])
# 输出结果:[1, 2, 3, 'A', 'Y', 'O', '小涛', '谢谢观看']

降序

list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]
print(list1[::-1])
# 输出结果:['谢谢观看', '小涛', 'O', 'Y', 'A', 3, 2, 1]

4·连续切片

list1 = [1,2,3,"A","Y","O","小涛","谢谢观看"]
# 连续切片就是逐一进行接片
print(list1[1:7][2:5][-3:-1]) # 先切[1:7] 结果为[2, 3, 'A', 'Y', 'O', '小涛'],在这个结果上再切[2:5]为['A', 'Y', 'O'],最后再这个切过两遍的结果上再切[-3:-1]
# 输出结果:['A', 'Y']

5·切片与for循环用法

for i in range(0,11)[2:10:2]
print(i)
# 输出结果:
2
4
6
8


举报

相关推荐

0 条评论