1、序列的概念

序列sequence是Python中最基本的数据结构。指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。

为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数据的一个个内存空间,每个房间所特有的房间号就相当于索引值。也就是说,通过房间号(索引)我们可以找到这家旅店(序列)中的每个房间(内存空间)。

在Python中,常用的序列类型包括字符串列表元组集合字典

提示:

之前我们说Python中不可变数据类型的时候,已经介绍过字符串的一些基础用法,忘记的可以查看前面的文章。

下面我们说说字符串的更高级一些的用法。

2、字符串的下标说明

(1)下标的概念

“下标”又叫“索引”,就是编号。比如火车的座位号,座位号的作用:按照编号快速找到对应的座位。同理,下标的作用即是通过下标快速找到数据中对应位置的字符。

所以字符串实际上就是字符的数组,如果想使用字符串中某个特定的数据,那么可以通过下标的方法取得。换句话说字符串数据的下标从0开始顺序分配一个编号,使用这个编号精确找到某个字符数据。

注意:下标从0开始,向后递增。

(2)快速体验

需求:字符串name = "abcdef",取到不同下标对应的数据。

name = "abcdef"
# 下标得到的是下标为某个数字所对应的数据
print(name[1])
print(name[0])
print(name[2]) """
输出结果
b
a
c
"""

(3)字符串取值的两种方式

在Python的字符串取值中,有两种取值方式,即正负取值。

  • 正向下标从0开始,下标值依次递增。
  • 负向下标从-1开始,下标值依次递减。

如下图所示:

练习:

name = "abcdef"

print(name[-1])
print(name[-4])
print(name[-2]) """
输出结果
f
c
e
"""

3、字符串的切片说明

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

(1)切片的语法

序列[开始位置下标:结束位置下标:步长]

注意:

  • 不包含结束位置下标对应的数据(截取的规则为“前闭后开”), 正负整数均可。
  • 步长表示,每次获取元素的间隔,默认步长为1。(可省略不写)

    步长正负整数均可,不能是0,设置0会直接异常。
  • 做切片操作时,总会返回一个新的列表(字符串,元祖),不会影响原来的列表(字符串,元祖)。
  • 一般创建列表时,变量的名字会使用复数。(我们直接输出,就不定义变量名了)

(2)示例

# 序列名[开始位置的下标:结束位置的下标:步长]

# 我定义的一个字符串就是从0开始的数字
# 对应着字符串的脚标,方便我们直观的查看结果。
str1 = '012345678' # 1.规范截取,可观察前闭后开
print(str1[2:5:1]) # 234 # 2.验证步长,为隔几个字符曲一次值
print(str1[2:5:2]) # 24 # 3.可以不写步长,默认为1
print(str1[2:5]) # 234 # 4.如果不写开始,默认从0开始选取
print(str1[:5]) # 01234 # 5.如果不写结束,表示从某位置开始,选取到最后。
print(str1[2:]) # 2345678 # 6.如果不写开始和结束,表示选取所有。
# 其实相当于创建了一个字符串的副本
print(str1[:]) # 012345678 # 负数测试
# 1.如果步长为负数,表示倒叙选取
print(str1[::-1]) # 876543210 # 2.下标-1表示最后一个数据,下标数值向前依次递减。
# 如下:从倒数第4位到倒数第1位,正向截取,前闭后开。
print(str1[-4:-1]) # 567 """
3.终极测试
从倒数第4位到倒数第1位,从左向右,
正向截取,前闭后开。
但是-1步长:是从右向左选取。
两个选取方向相反,所以不能选取出数据
"""
print(str1[-4:-1:-1]) # 没有结果 # 如下修改,从最后1位截取到倒数第4位
# 方向是从后向前,也就是从右到左,
# 步长-1的方向,也是从从右到左。
# 所以可以取到值。
print(str1[-1:-4:-1]) # 876 """
重点:****
如果选取方向(下标开始到结束的方向) 和
步长的方向冲突,
则无法选取数据。
"""

总结:

这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推 。

(3)补充示例

# 1.做切片操作时,总会返回一个新的列表,不会影响原来的列表。
stus = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精']
new_stus = stus[0 :3]
print(stus)
print(new_stus) """
输出结果:
['孙悟空', '猪八戒', '沙和尚', '唐僧', '蜘蛛精', '白骨精']
['孙悟空', '猪八戒', '沙和尚']
""" # 步长不能设置为0
# 结果:ValueError: slice step cannot be zero
print(stus[0 :3 : 0]) # 异常

『无为则无心』Python基础 — 16、Python序列之字符串的下标和切片的更多相关文章

  1. 『无为则无心』Python基础 — 4、Python代码常用调试工具

    目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...

  2. 『无为则无心』Python基础 — 8、Python中的数据类型(数值、布尔、字符串)

    目录 1.数据类型介绍 2.数值型(Number) 3.布尔型(bool) 4.None(空值) 5.常量 6.字符串(String) 1.数据类型介绍 (1)什么是数据类型 在生活中,我们日常使用的 ...

  3. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...

  4. 『无为则无心』Python基础 — 6、Python的注释

    目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...

  5. 『无为则无心』Python基础 — 7、Python的变量

    目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...

  6. 『无为则无心』Python基础 — 10、Python字符串的格式化输出

    目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...

  7. 『无为则无心』Python基础 — 61、Python中的迭代器

    目录 1.迭代的概念 2.迭代器的概念 3.可迭代的对象(Iterable) 4.迭代器对象(Iterator) 5.迭代器的使用体验 (1)基本用法 (2)实际应用 1.迭代的概念 (1)什么是迭代 ...

  8. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

  9. 『无为则无心』Python序列 — 17、Python字符串操作常用API

    目录 1.字符串的查找 @1.find()方法 @2.index()方法 @3.rfind()和rindex()方法 @4.count()方法 2.字符串的修改 @1.replace()方法 @2.s ...

随机推荐

  1. Element ui结合springboot的简单实战

    Eelment UI简单实战 前端开发 1 创建项目,导入element ui(略) 2 大致设计出想要的效果,如下 3 创建包 根据设计的大致模样在项目的components中创建对应的包,方便以后 ...

  2. mitrproxy抓包微信小程序

    mitmproxy mitmproxy is a set of tools that provide an interactive, SSL/TLS-capable intercepting prox ...

  3. 007.Ansible变量Fact,魔法变量和lookup生成变量

    一 fact变量 1.1  fact简介 ansible有一个模块叫setup,用于获取远程主机的相关信息,并可以将这些信息作为变量在playbook里进行调用.而setup模块获取这些信息的方法就是 ...

  4. linux python3安装whl包时报错解决:is not a supported wheel on this platform

    原因1 你下载安装的包不是当前平台所支持的 原因2 你下载的包,不符合你所在的平台的安装whl的名称规范,所以出错.比如当前我要安装的包是:pymssql-2.1.5-cp36-cp36m-manyl ...

  5. STM32的VDD与VDDA

    http://bbs.21ic.com/icview-1651072-1-1.html VDD VSS 就是平常的电源与地.后面带A的都是模拟量的电源.

  6. IDEA 最实用快捷键【MAC版本】

    目录 option + F7 Ctrl + B / Ctrl +鼠标左键(一键两用,可以无限循环的跳过来跳过去,我跳过去了,我又跳回去了) command + E (这个快捷键很有用,为什么我老是用不 ...

  7. NCF 如何通过WebApi实现前后端分离

    简介 昨天参加了<Best Of Microsoft Build>上海专场 NCF 模块化 WebApi 系统开发 + 容器化部署实战 的小伙伴们,昨天有些没有记住的,今天我在这里给大家把 ...

  8. Python+Selenium学习笔记1 - pip命令

    1.用pip命令安装模块 pip install 模块名 e.g. pip install qrcode 2.用pip卸载模块 pip uninstall 模块名 e.g. pip uninstall ...

  9. GPU 硬件虚拟化Hardware Virtualization

    GPU 硬件虚拟化Hardware Virtualization 1. Principles 一个物理GPU可以虚拟化为多个vGPUs.VMs可以绑定到vGPUs以直接访问一些物理GPU资源. 2. ...

  10. 开发掉坑(一)tar命令解压文件覆盖源文件

    今天在编译机上编译前端代码,报了找不到依赖的异常.检查后发现是node_modules/.bin下少了一些文件. 一开始疑惑为什么本地能成功生成软链在node_modules/.bin,服务器上面却不 ...