【Python基础】Python数据容器(切片)

简介: 【Python基础】Python数据容器(切片)

数据容器(序列)的切片

  • 序列:内容连续、有序,可使用下标索引的一类数据容器
    列表、元组、字符串,均可以视为序列

切片定义

在Python中,切片是一种非常方便的操作,它允许从列表、元组、字符串等序列类型中,获取一部分元素或子序列。


切片通过使用start、stop和step三个参数来指定要获取的元素范围。其中,start指定开始索引,stop指定结束索引(但不包括结束索引对应的元素),step指定步长(默认为1)。


下面是一些示例:

#字符串切片
s = 'Hello, World!'
print(s[7:])   # World!
print(s[0:5])  # Hello
print(s[::2])  # Hlo ol!
#列表切片
my_list = [1,2,3,4,5]
print(my_list[1:3])     # [2, 3]
print(my_list[::2])     # [1, 3, 5]
#元组切片
my_tuple = (1,2,3,4,5)
print(my_tuple[1:4:2])  # (2, 4)

切片操作还可以用于复制序列,例如:

my_list = [1, 2, 3, 4, 5]
copy_list = my_list[:] #复制整个列表
print(copy_list)

切片操作也可以用于修改序列中的元素,例如:

my_list = [1, 2, 3, 4, 5]
my_list[1:3] = [6, 7] #将第二和第三个元素替换为6和7
print(my_list)  # [1, 6, 7, 4, 5]

总之,切片操作可以让我们更方便地处理序列类型的数据,是Python中非常实用的一种特性。

序列的常用操作 - 切片

序列支持切片,即:列表、元组、字符串,均支持进行切片操作

切片:从一个序列中,取出一个子序列

语法:序列[起始下标:结束下标:步长] 取出的子序列不包含结束下标对应的元素

表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列

  • 起始下标表示从何处开始,可以留空,留空视作从头开始
  • 结束下标(不含)表示何处结束,可以留空,留空是做截取到结尾
  • 步长表示,依次取出元素的间隔
  • 步长1表示,一个个去元素
  • 步长2表示,每次跳过一个元素取
  • 步长N表示,每次跳过N-1给元素取
  • 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

Tip:此操作不会影响序列本身,而是会得到一个新的秀娥(列表、元组、字符串)

"""
演示 对序列进行切片操作
"""
# 正向
# 对list进行切片,从1开始,4结束,步长1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]   # 步长默认是1,所以可以省略不写   # 不包含结束下标(此处即下标为4的元素)的元素
print(f"结果1:{result1}")
# 对tuple进行切片,从头开始,到最后结束,步长1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:]  # 起始和结束不写表示从头到尾,步长为1可以省略
print(f"结果2:{result2}")
# 对str进行切片,从头开始,到最后结束,步长2
my_str = "01234567"
result3 = my_str[::2]  # 从头到尾,步长为2
print(f"结果3:{result3}")
运行效果:
结果1:[1, 2, 3]
结果2:(0, 1, 2, 3, 4, 5, 6)
结果3:0246
# 反向
# 对str进行切片,从头开始,到最后结束,步长-1
my_str = "01234567"
result4 = my_str[::-1]
print(f"结果2:{result4}")
# 对列表进行切片,从3开始,到1结束,步长-1
my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_list[3:1:-1]
print(f"结果5:{result5}")
# 对元组进行切片,从头开始,到尾结束
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::-2]
print(f"结果6:{result6}")
运行效果:
结果4:76543210
结果5:[3, 2]
结果6:(6, 4, 2, 0)
  • 练习案例:序列的切片实践
"""
序列的切片课后练习
my_str = "nohtyp1,ih" 取出python
"""
my_str = "nohtyp1,ih"
# 倒序字符串,切片取出
result1 = my_str[::-1][4:10]
print(f"方式1结果:{result1}")
# 切片取出,然后倒序
result2 = my_str[0:6][::-1]
print(f"方式2:{result2}")
# split分割”,“,replace替换1为空,倒序字符串
step1_list = my_str.split(",")
result3 = step1_list[0].replace("1", "")[::-1]
print(f"方式3:{result3}")
运行效果:
方式1结果:python
方式2:python
方式3:python


目录
相关文章
|
7天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
16 1
|
8天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
9天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
21天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
48 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
7天前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
15 0
|
Python 容器
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
|
2天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
2天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
3天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。