Python列表的索引与切片
作者:渴望力量的哈士奇 发布时间:2022-11-17 13:06:19
什么是索引?
哪些数据类型里有索引的概念? —> 字符串、列表、元组
从最左边记录的位置开始就是索引
索引用数字表示,起始位是从 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 和列表的用法完全一致
无法通过索引修改、删除元素(因为元组是不可修改的)
来源:https://blog.csdn.net/weixin_42250835/article/details/123153519


猜你喜欢
- 需求:序列化外键,获取外键的除id之外的值使用Django REST Framework虽然开发接口快速,但是如果想要获取到除外键id值之外
- 一、新建项目:SqlSugarDemo<ItemGroup> <PackageReference
- 本文实例讲述了Python操作word常见方法。分享给大家供大家参考,具体如下:这里介绍两种方式:使用win32com使用docx1. 使用
- 前言:通常我们创建类都是使用class 类名,但是小伙伴们有没有想过,类是由谁来创建的呢,python中常说的万物皆对象,对象是由类创建的,
- 本文实例讲述了Python二叉树定义与遍历方法。分享给大家供大家参考,具体如下:二叉树基本概述:二叉树是有限个元素的几个,如果为空则为空二叉
- 按位与或(&、|、^):按照二进制进行逻辑运算例如:数字换成二进制,各自位上的0/1进行逻辑运算,得到的结果转换为数字3 &
- 译文原文:http://blog.benhuoer.com/2009/04/10-simple-and-impressive-design-
- 对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用。这个JavaScript自
- 说明1、将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果。2、结构分为Abstraction抽象类、Refin
- 看了不少js继承的东西也该总结总结了。先说一下大概的理解,有不对的还望指正,也好更正一下三观。另外说明下,下面的例子并非原创基本就是改了个变
- 本文实例讲述了layer弹窗插件操作方法。分享给大家供大家参考,具体如下:1、首先去http://layer.layui.com/下载插件2
- 假设有一个表,结构如下:mysql> CREATE TABLE `a` ( `id
- 我的第一个用于生产环境的perl脚本,虽然不是很优秀,但也迈出了扎实的一步 :)领导有任务,给一批IP列表,ping每一台机器,如果没有响应
- REPLACE语法REPLACE(String,from_str,to_str)即:将String中所有出现的from_str替换为to_s
- 在平时,常常会提醒自己要做一个善于发现的人,时刻发现细节,这样才会更加懂得生活、会让生活更加精彩。在学习上也是如此,我们常常会发现有很多网站
- 引言:在微信小程序里,比如商品展示页面的商品详情会有图片展示,PC端设置的商品详情是PC端的宽度,所以在小程序里图片会显示不全,这时就应该做
- Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执
- 前言gRPC 这项技术真是太棒了,接口约束严格,性能还高,在 k8s 和很多微服务框架中都有应用。作为一名程序员,学就对了。之前用 Pyth
- 在我的使用SQL Server2005的新函数构造分页存储过程中,我提到了使用ROW_NUMBER()函数来代替top实现分页存储过程。 但
- Stochastic Depth论文:Deep Networks with Stochastic Depth本文的正则化针对于ResNet中