> 文档中心 > Python零基础入门篇 - 23 - 列表的索引与切片

Python零基础入门篇 - 23 - 列表的索引与切片


前言
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的养了一只哈士奇)
📑 个人主页:渴望力量的哈士奇主页
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,还请不吝👍关注、点赞、收藏三连支持👍一下博主哦
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

📕系列专栏::
               👍 Python全栈系列 - [更新中]    ➡️➡️➡️ 【 本文在该系列】
               👋 网安之路系列
​                       🍋 网安之路踩坑篇
​                       🍋 网安知识扫盲篇
​                       🍋 Vulhub 漏洞复现篇
​                       🍋 Shell脚本编程篇
​                       🍋 Web攻防篇  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                       🍋 渗透工具使用集锦  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                       🍹 测试神器 - Charles 篇
​                       🍹 测试神器 - Fiddler 篇
​                       🍹 测试神器 - Jmeter 篇
​                       🍹 自动化 - RobotFrameWork 系列
​                       🍹 自动化 - 基于 JAVA 实现的WEB端UI自动化
                       🍹 自动化 - 基于 MonkeyRunner 实现的APP端UI自动化
​                🤗 2019年之前学习Python留下的乱七八糟系列

                                                                                  🎉🎉欢迎持续关注🎉🎉

Python零基础入门篇 - 23 - 列表的索引与切片

文章目录

    • 什么是索引
    • 什么是切片?
      • 列表的索引,获取与修改
      • 通过 pop() 函数删除索引
      • 通过 del 删除索引
      • 索引在元组中的特殊性

什么是索引?

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

示例如下:

names = ['Neo', 'Jack', 'Adem']print(names[0])# >>> Neoprint(names[-1])# >>> Ademprint(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' 的索引位置是 2test_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 和列表的用法完全一致
  • 无法通过索引修改、删除元素(因为元组是不可修改的)