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 相关文章推荐
Python面向对象编程中的类和对象学习教程
Mar 30 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
Jun 09 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
python实现文本界面网络聊天室
Dec 12 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
通过python爬虫赚钱的方法
Jan 29 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
python中列表的切片与修改知识点总结
Jul 23 Python
django使用JWT保存用户登录信息
Apr 22 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
Python基本知识点总结
Apr 07 #Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 #Python
Python OpenCV实现图像模板匹配详解
Python实现日志实时监测的示例详解
You might like
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php session和cookie使用说明
2010/04/07 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
python实现的发邮件功能示例
2019/09/11 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
销售员自我评价怎么写
2013/09/19 职场文书
儿科护士实习自我鉴定
2013/10/17 职场文书
给小学生的新年寄语
2014/04/04 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
消防安全承诺书
2014/05/22 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
《称赞》教学反思
2016/02/17 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python