Python列表的索引与切片


Posted in Python onApril 07, 2022

什么是索引?

  • 哪些数据类型里有索引的概念? —> 字符串、列表、元组
  • 从最左边记录的位置开始就是索引
  • 索引用数字表示,起始位是从 0 开始
  • 字符串、列表、元组的最大索引是他们的长度 - 1

示例如下:

names = ['Neo', 'Jack', 'Adem']
print(names[0])            # >>> Neo
print(names[-1])        # >>> Adem
print(names[5])            # IndexError: list index out of range    没有索引为5的元素,所以报错

什么是切片?

  • 索引用来对单个成员(元素)进行访问,切片则是对一定范围内的成员(元素)进行访问
  • 切片通过冒号的方式在中括号内把相隔的两个索引位置范围内的成员(元素)找出来,如 [0:10]
  • 切片的规则:左含,右不含; 左边包含,右边不包含
  • 通过切片方式获取的完整的列表已经不再是原来的列表了,即使获取的是原来列表的完整的内容

示例如下:

num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(num_list[3:7])

执行结果如下:

>>> [4, 5, 6, 7]

获取列表的完整内容如下:

names = ['Neo', 'Jack', 'Adem']
print('names 列表完整的内容是:', names[:])
print('names 列表完整的内容是:', names[0:])

执行结果如下:

>>> names 列表完整的内容是: ['Neo', 'Jack', 'Adem']
 >>> names 列表完整的内容是: ['Neo', 'Jack', 'Adem']

通过切片方式获取的完整的列表已经不再是原来的列表了,即使获取的是原来列表的完整的内容,

示例如下:

names = ['Neo', 'Jack', 'Adem', 'Lily']
print('\'names\' 列表的内存地址为:', id(names))
print('索引获取的完整\'names\' 列表的内存地址为:', id(names[0:]))

# 执行结果如下:
# >>> 'names' 列表的内存地址为: 140522949689152
# >>> 索引获取的完整'names' 列表的内存地址为: 140522949686656 

反序获取列表成员(元素),示例如下:

num_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(num_list[::-1])       # 列表的反序
print(num_list[-3:-1])      # 列表的反向获取
print(num_list[0:8:2])      # 列表的步长获取:【每隔2步长(也可以理解为每两个数值)获取索引0到8的元素】

# 执行结果如下:
# >>> [8, 7, 6, 5, 4, 3, 2, 1]
# >>> [6, 7]
# >>> [1, 3, 5, 7]

切片生成空列表,示例如下:

num_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(num_list[0:0]) 

# 执行结果如下:
# >>> []

列表的索引,获取与修改

  • list.index(item) 列表通过 index() 函数,传入一个元素来获取当前元素的索引值
  • list[index] = new_item ; list[index]为变量对应的索引的值; new_item 为一个新的元素
  • 数据修改的范围只能是已存在的索引范围内
  • 列表无法通过添加新的索引的方式赋值

示例如下:

test_str = ['a', 'b', 'c', 'd']
print(test_str.index('c'))

# 执行结果如下:
# >>> 2            'c' 的索引位置是 2


test_str = ['a', 'b', 'c', 'd']
print(test_str.index('e'))

# 执行结果如下:
# >>> ValueError: 'e' is not in list
test_str = ['a', 'b', 'c', 'd']
test_str[0]='z'
print(test_str)

# 执行结果如下:
# >>> ['z', 'b', 'c', 'd']


test_str = ['a', 'b', 'c', 'd']
test_str[:]='h', 'j', 'k', 'l'
print(test_str)

# 执行结果如下:
# >>> ['h', 'j', 'k', 'l']


test_str = ['a', 'b', 'c', 'd']
test_str[:]=['o', 'p', 'q', 'r']
print(test_str)

# 执行结果如下:
# >>> ['o', 'p', 'q', 'r']
test_str = ['a', 'b', 'c', 'd']
test_str[5]='z'
print(test_str)

# 执行结果如下:
# >>> IndexError: list assignment index out of range

通过 pop() 函数删除索引

pop() 函数的功能:通过索引删除并获取列表的元素

pop() 函数的用法: list.pop(index) , index 为删除列表的第几个元素

  • 函数会删除该索引的元素并返回
  • 如果传入的 index 索引不存在,则会报错

示例如下:

names = ['Neo', 'Jack', 'Adem', 'Lily']
pop_item = names.pop(1)
print('删除的元素为:', pop_item, ', 被删除后的\'names\'列表为:', names)

# 执行结果如下:
# >>> 删除的元素为: Jack , 被删除后的'names'列表为: ['Neo', 'Adem', 'Lily']


names = ['Neo', 'Jack', 'Adem', 'Lily']
pop_item = names.pop(5)
print(names)

# 执行结果如下:
# >>> IndexError: pop index out of range

通过 del 删除索引

del 函数的功能:通过索引删除并获取列表的元素

del 函数的用法: del list(index) , index 为删除列表的第几个元素

  • 直接删除,无返回值
  • 如果传入的 index 索引不存在,则会报错

示例如下:

names = ['Neo', 'Jack', 'Adem', 'Lily']
del names[0]
print(names)

# 执行结果如下:
# >>> ['Jack', 'Adem', 'Lily']


names = ['Neo', 'Jack', 'Adem', 'Lily']
del names[0]
print(names)

# 执行结果如下:
# >>> IndexError: list assignment index out of range

索引在元组中的特殊性

  • 可以和列表 一样获取索引与切片索引
  • 元组函数 index 和列表的用法完全一致
  • 无法通过索引修改、删除元素(因为元组是不可修改的)

到此这篇关于Python列表的索引与切片的文章就介绍到这了,更多相关Python 索引与切片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解如何利用Cython为Python代码加速
Jan 27 Python
解决python报错MemoryError的问题
Jun 26 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
使用Python实现将list中的每一项的首字母大写
Jun 11 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
python多线程同步实例教程
Aug 11 Python
pytorch 修改预训练model实例
Jan 18 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
python能否java成为主流语言吗
Jun 22 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
Python基本知识点总结
Apr 07 #Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 #Python
Python OpenCV实现图像模板匹配详解
Python实现日志实时监测的示例详解
You might like
PHP命名空间namespace用法实例分析
2016/09/27 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
python中bisect模块用法实例
2014/09/25 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
为Python的web框架编写MVC配置来使其运行的教程
2015/04/30 Python
在Django中创建第一个静态视图
2015/07/15 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
django自定义模板标签过程解析
2019/12/14 Python
Python解析多帧dicom数据详解
2020/01/13 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
高中自我鉴定
2013/12/20 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
茶花女读书笔记
2015/06/29 职场文书
公司费用报销管理制度
2015/08/04 职场文书
2019同学聚会主持词
2019/05/06 职场文书
MySQL8.0的WITH查询详情
2021/08/30 MySQL