python字符串和列表的切片


前言

 对于字符串和列表python提供了以[ start : end : step ]直观方式来截取字符串和列表一部分,使用起来非常便利和直观。


1、切片字符串例子

# 定义一个字符串
str1 = 'hello world'
print(str1[0:5]) # str1[0:5]表示从str1截取从01234位置的字符。
print(str1[6:]) # str1[6:]表示从str1截取从6位置起始所有字符。
# hello
# world

在这里插入图片描述

2、切片语法说明

在形式上,切片使用2个冒号分隔的3个数字来完成。
[start : end : step]
第一个数字 start表示切片开始位置,默认为0;
第二个数字 end 表示切片截止(但不包含)位置默认为列表长度;
第三个数字setp表示切片的步长(默认为1)。
当start为0时候可以省略,当end为列表长度是可以省略,当step为1可以省略,省略步长时还可以省略最后一个冒号。
当step为负数时,表示反向切片,这是start应该在end右侧才行。
start是起始位置(包括start位置)
end是结束位置(不包括end位置)
step是步长。

对照切片使用形式,我们要把握两个点:

  1. end是不包括所在索引号,[0:5]转换到数学可以看作[0,5)正整数集合范围表达,就是0,1,2,3,4。
  2. 注意不要被省略的形式迷惑。

3、列表切片例子演练

省略会让我们容易搞混,这里把省略和完整对比一下,加深切片语法形式。

list1 = ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
# 1、切片语法是[start : end : step] 
print(list1[::])  # ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
print(list1[:])   # ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
#list1[::]等同list1[:]等同list1

#2、这个不是切片操作,这个表示按索引号取值
#2、切片语法是[start : end : step] 再省略也得有:符号。
print(list1[1])   # shanghai

#3、省略end,end默认为列表长度值
print(list1[1:])  # ['shanghai', 'guangzhou', 'shenzhen']
print(list1[1::]) # ['shanghai', 'guangzhou', 'shenzhen']
#list1[1:]等同list1[1::]

#3、省略start,start默认是0
print(list1[:1])  # ['beijing']
print(list1[:1:]) # ['beijing']
#list1[:1]等同list1[:1:]

#步长为2,第一个从0开始,0 2,第二从1开始1 3print(list1[::2])  # ['beijing', 'guangzhou']
print(list1[1::2]) # ['shanghai', 'shenzhen']

#从倒数三开始到倒数第二进行切片,步长为2
print(list1[-3:-1:2]) # ['shanghai']

总结

切片对于截取字符串和列表是便利,要记住三个点:

  1. 无论是字符串还是列表,起始位置都是0。
  2. start包含自己, end是不包含自己。
  3. 按照[start : end : step] 来套,就不会被省略搞混淆。
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值