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提取网页中超链接的方法
Sep 18 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
Python语言进阶知识点总结
May 28 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
python经典趣味24点游戏程序设计
Jul 26 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
python处理excel绘制雷达图
Oct 18 Python
Python 静态方法和类方法实例分析
Nov 21 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
Jan 10 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
Python爬虫开发与项目实战
Dec 16 Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
Python基本知识点总结
Apr 07 #Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 #Python
Python OpenCV实现图像模板匹配详解
Python实现日志实时监测的示例详解
You might like
怎样在php中使用PDF文档功能
2006/10/09 PHP
php 中的str_replace 函数总结
2007/04/27 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
Python中print和return的作用及区别解析
2019/05/05 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
给水工程专业毕业生自荐信
2014/01/28 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
个人批评与自我批评
2014/10/15 职场文书
教师学期个人总结
2015/02/11 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电