当前位置: 首页 > article >正文

Day41:列表的切片

列表切片是 Python 中处理列表数据的重要工具,它允许我们提取列表的一部分。通过切片,我们可以从一个列表中提取连续的子列表,或对列表进行重组和操作。

1. 列表切片的基本语法

列表切片的基本语法如下:

list[start:end:step]
  • start:切片开始的索引(包含该位置的元素),如果省略,则默认为 0。
  • end:切片结束的索引(不包含该位置的元素),如果省略,则默认为列表的末尾。
  • step:步长,默认为 1,表示按顺序选取元素。若为负数,则表示反向选取。

2. 切片操作示例

2.1 提取子列表

假设我们有以下列表:

numbers = [10, 20, 30, 40, 50, 60, 70]

我们可以使用切片来提取子列表:

sublist = numbers[2:5]  # 从索引 2 开始到索引 5 结束(不包括索引 5)
print(sublist)

输出结果:

[30, 40, 50]

2.2 切片省略 startend

  • 如果省略 start,则从列表的开头开始:
sublist = numbers[:4]  # 从开头到索引 4 结束(不包括索引 4)
print(sublist)

输出结果:

[10, 20, 30, 40]
  • 如果省略 end,则到列表的末尾:
sublist = numbers[3:]  # 从索引 3 开始到列表的末尾
print(sublist)

输出结果:

[40, 50, 60, 70]

2.3 切片省略 startend

如果同时省略 startend,则返回整个列表的副本:

sublist = numbers[:]  # 获取整个列表的副本
print(sublist)

输出结果:

[10, 20, 30, 40, 50, 60, 70]

2.4 使用 step 进行切片

step 参数可以让我们选择每隔几个元素取一个。例如,获取列表中每隔一个元素的子列表:

sublist = numbers[::2]  # 每隔一个元素取一个
print(sublist)

输出结果:

[10, 30, 50, 70]

如果 step 为负数,则可以反向获取子列表:

sublist = numbers[::-1]  # 列表反转
print(sublist)

输出结果:

[70, 60, 50, 40, 30, 20, 10]

2.5 使用负数索引

Python 支持负数索引,负数索引表示从列表的末尾开始计数。例如,-1 表示列表的最后一个元素,-2 表示倒数第二个元素,依此类推。

sublist = numbers[-4:-1]  # 从倒数第4个到倒数第2个
print(sublist)

输出结果:

[40, 50, 60]

2.6 结合 start, endstep 进行复杂切片

我们可以结合 startendstep 来进行更复杂的切片操作:

sublist = numbers[1:6:2]  # 从索引 1 到索引 6(不包括 6),每隔 2 个元素取一个
print(sublist)

输出结果:

[20, 40, 60]

3. 切片的应用

切片不仅可以用于提取子列表,还可以用于修改列表中的元素或复制列表。

3.1 修改列表中的元素

使用切片赋值,可以替换列表中的一部分内容:

numbers[1:4] = [200, 300, 400]  # 将索引 1 到 3 的元素替换为新值
print(numbers)

输出结果:

[10, 200, 300, 400, 50, 60, 70]

3.2 删除列表中的元素

通过将切片赋值为空列表,可以删除列表中的一部分元素:

numbers[1:4] = []  # 删除索引 1 到 3 的元素
print(numbers)

输出结果:

[10, 50, 60, 70]

3.3 复制列表

通过切片,可以快速创建一个列表的副本:

numbers_copy = numbers[:]
print(numbers_copy)

输出结果:

[10, 50, 60, 70]

4. 列表切片的性能

切片操作会创建一个新的列表副本,这意味着原列表不会受到影响。如果需要频繁对列表进行切片操作,应当注意可能会影响程序的性能,尤其是在处理大列表时。


5. 小结

通过列表的切片功能,Python 提供了一种简洁且高效的方法来提取、修改或删除列表中的部分元素。无论是通过索引提取子列表,还是通过步长操作和反向切片,列表切片都能极大地提高代码的可读性和操作的灵活性。


6. 课后练习

练习 1:提取子列表

给定一个包含多个整数的列表,提取列表中的第 3 个到第 7 个元素。

练习 2:反向排序

创建一个列表,并使用切片将其反转。

练习 3:修改子列表

给定一个列表,将其第 2 到第 5 个元素替换为新的值。

练习 4:删除部分元素

创建一个列表,并通过切片删除其中的一部分元素。

练习 5:列表复制

给定一个列表,创建一个新的列表,并将原列表的元素复制到新列表中。


http://www.kler.cn/a/521440.html

相关文章:

  • 如何写美赛(MCM/ICM)论文中的Summary部分
  • 【AI非常道】二零二五年一月(二),AI非常道
  • Mac Electron 应用签名(signature)和公证(notarization)
  • springboot使用rabbitmq
  • 你好!这是我自己的CSDN博客!
  • Java 知识速记:全面解析 final 关键字
  • pytorch 张量创建基础
  • 关于pygame窗口输入法状态异常切换现象的分析报告
  • 每日 Java 面试题分享【第 11 天】
  • SSM开发(四) spring+SpringMVC+mybatis整合(含完整运行demo源码)
  • PHP htmlspecialchars()函数详解
  • javascript-es6 (二)
  • 深度学习,python编程运行环境问题等记录(更新)
  • DistilBERT 是 BERT 的精简版本,具有更小、更快、更经济、更轻便的特点。
  • SD-WAN站点和客户端的区别
  • VS Code i18n国际化组件代码code显示中文配置 i18n ally
  • toRow和markRow的用法以及使用场景
  • K8s运维管理平台 - KubeSphere 3.x 和4.x 使用分析:功能较强,UI美观
  • 【Java-数据结构】Java 链表面试题上 “最后一公里”:解决复杂链表问题的致胜法宝
  • 深圳大学-智能网络与计算-实验三:网络容量优化分析实验
  • 【2024年华为OD机试】 (B卷,100分)- 阿里巴巴找黄金宝箱(III)(JavaScriptJava PythonC/C++)
  • 超硬核,基于mmap和零拷贝实现高效的内存共享
  • 计算机图形学知识点整理(期末复习/知识点学习/笔试/面试)
  • DDD-事件风暴
  • 机器学习 - 初学者需要弄懂的一些线性代数的概念
  • Alfresco Content Services dockerCompose自动化部署详尽操作