字符串 列表 元组 字典 集合3.2字符串切片

一、是什么

较为官方的说法:切片是指对操作的对象截取其中一部分的操作

通俗来说:一种能够从数据中取到一部分数据的方式

例如,

有一个字符串"abcdef",我们可以通过切片取到"cde"

切片不仅可以在字符串中应用,还可以对列表、元组等进行操作,简言之“切片”功能很重要。

本节课我们以字符串为例讲解“切片”

二、怎样用

1. 语法

[起始:结束:步长]

  

注意

  • 选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔
  • 默认“步长”为1,即取完一个下标的数据之后,第二个下标的是在刚刚下标基础上+1
  • 步长为正数,表示从左向右取数据
  • 步长为负数,表示从右向左取数据

2. 示例

demo1

name = 'abcdef'
print(name[0:3])  # 取下标为0、1、2的字符,注意取不到下标为3的空间

  

运行结果:

abc

  

说明:

image-20200831095157818

demo2

name = 'abcdef'
print(name[:3])  # 取下标为0、1、2的字符,注意取不到下标为3的空间

  

运行结果:

abc

  

说明:

image-20200831100743272

demo3

name = 'abcdef'
print(name[3:5])  # 取 下标为3、4 的字符

  

运行结果:

de

  

说明

image-20200831100905082

demo4

name = 'abcdef'
print(name[2:])  # 取 下标为2开始到最后的字符

  

运行结果:

cdef

  

说明:当没有写截至下标时,默认到最后(包含)

image-20200831101024891

demo5

name = 'abcdef'
print(name[1:-1])  # 取 下标为1开始 到 右侧第2个字符 之间的所有字符

  

运行结果:

bcde

  

说明:

image-20200831101311788

demo6

name = 'abcdef'
print(name[1:5:2])

  

运行结果:

bd

  

说明:

image-20200831101810493

demo7

name = 'abcdef'
print(name[5:1:-1])

  

运行结果:

fedc

  

说明

image-20200831102405526

demo8

name = 'abcdef'
print(name[5:1:-2])

  

运行结果:

fd

  

说明

image-20200831102725861

demo9

name = 'abcdef'
print(name[::1])

  

运行结果:

abcdef

  

说明

image-20200831103041625

demo10

name = 'abcdef'
print(name[::])

  

运行结果:

abcdef

  

说明:

  • 开始位置、结束位置都未指定,且步长也未指定那么步长用默认的1,则此时从最左取到最右

demo11

name = 'abcdef'
print(name[::-1])

  

运行结果:

fedcba

  

说明:

  • 开始位置、结束位置都未指定,步长为-1,此时从最右取到最左

demo12

name = 'abcdef'
print(name[::-2])

  

运行结果:

fdb

  

说明

  • 开始、结束位置都未指定,且步长是-2,那么就意味着从右侧往左取数据,且步子长度为2(即隔一个取一个)

三、练习

给定一个字符串s, 请反转字符串

s = 'Hello World!'

print(s[4])

print(s)

print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1

print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)

print(s[:5])  # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)

print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)

print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)

print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)

# python 字符串快速逆序
print(s[::-1])  # 从后向前,按步长为1进行取值

  

四、总结

  • 切片使用规则中,要么一个冒号[开始位置:结束位置],要么两个冒号[开始位置:结束位置:步长]
  • 不写步长时,默认为1
  • 步长为正数,表示从左向右取数据
  • 步长为负数,表示从右向左取数据
  • 当开始位置、结束位置都没有设定时,要看步长,如果步长为正数此时开始位置理解为最左 结束位置为最右,如果步长为负数此时开始位置理解为最右 结束位置为最左
原文地址:https://www.cnblogs.com/dong4716138/p/15667708.html