Python列表常用方法(3-3)

举报
乂氼S 发表于 2023/05/28 13:18:42 2023/05/28
【摘要】 Python列表常用方法(3-3)

 目录

一.列表extend

1.extend的功能

2.extend的用法

3.extend拓展说明

二.索引与切片之列表

1.什么是索引?

2.什么是切片?

3.列表的索引,获取与修改

4.pop的功能

5.pop的用法

6.通过del删除索引

 三.索引与切片之字符串

1.字符串的索引与获取

2.字符串的find与index函数

3.find与index的区别

4.拓展





一.列表extend

1.extend的功能

  • 将其他列表或元组中的元素导入到当前列表中

2.extend的用法

  • 用法:list.extend((iterable)  #  iterable代表可迭代的数据类型
  • 参数:iterable代表列表元组或其它可迭代对象,该函数无返回值

3.extend拓展说明

  • 传入字符串,会将每个字符分开传入
  • 传入字典,只会传入字典的key
  • 整型、浮点型、None、bool型不能传入,会报错,因为它们是不可迭代的
  • 根据Python的文档,extend方法是用于将一个可迭代对象中的元素添加到列表中的方法。它不是迭代合并的方法,而是将可迭代对象中的元素逐个添加到列表中。如果你想要将两个列表合并成一个列表,你可以使用“+”运算符或者extend方法。
  • 注意,使用“+”运算符或者extend方法都会修改原始的列表,而不是创建一个新的列表。如果你想要创建一个新的列表,你可以使用列表解析(列表生成推导式)或者copy方法。

  实战:

# coding:utf-8

manhua = []
history = []
code = []

new_manhua = ('a', 'b', 'c')
new_history = ('中国历史', '韩国历史', '日本历史')
new_code = ['python', 'django', 'flask']

manhua.extend(new_manhua)
history.extend(new_history)
code.extend(new_code)

print(manhua, history, code)

history.extend(manhua)
del manhua
print(history)

test = []
test.extend('adsf')  # 会将每个元素拆开
print(test)
test.clear()
test.extend({'name': '123'})  # 只会传入key
print(test)

test.extend(1)  # 数字类型不可以迭代,所以会报错
test.extend(None)  # 也会报错
test.extend(True)  # 也会报错

  输出:


['a', 'b', 'c'] ['中国历史', '韩国历史', '日本历史'] ['python', 'django', 'flask']
['中国历史', '韩国历史', '日本历史', 'a', 'b', 'c']
['a', 'd', 's', 'f']
['name']
Traceback (most recent call last):
  File "D:\pythonlearn\01-阶段一:python基础入门\第02周三大主流数据类型的操作\list_extend.py", line 28, in <module>
    test.extend(1)  # 数字类型不可以迭代,所以会报错
    ^^^^^^^^^^^^^^
TypeError: 'int' object is not iterable

进程已结束,退出代码1



二.索引与切片之列表

1.什么是索引?

  • 字符串,列表和元组,从最左边记录的位置就是索引
  • 索引用数字表示,起始从0开始
  • 字符串,列表(元组)的最大索引是他们的长度-1

2.什么是切片?

  • 索引用来对单个元素进行访问,切片则对一定范围内的元素进行访问
  • 切片通过冒号在中括号内把相隔的两个索引查找出来,例如[0:10]
  • 左含右不含
  • 注意!使用索引获取的数据,内存地址与原列表不同(相当于原列表的副本)
  • (切片生成空列表:',numbers[0:0] or numbers[:])
  • 反序可以使用[::-1]

3.列表的索引,获取与修改

  • list[index] = new_item
  • 数据的修改只能在存在的索引范围内,超出的索引无效
  • 列表无法通过添加新的索引的方式赋值
  • list.index(item):返回元素首次出现的索引值(与find类似,不过,如果index没有找到要查找的元素,则会报错,而find会返回-1,所以在我们的实际开发中更倾向于使用find)

  实战:

  

# coding:utf-8

test_list = [i for i in range(10)]
print(test_list)
print(test_list[:])  # 第一种获取列表完整数据
print(test_list[0:])  # 第二种获取列表完整数据
print(test_list[:-1])  # 第三种获取列表的方法,但不包括最后一个元素,也就是不包括-1这个索引
print(test_list[::-1])  # 列表的反序
print(test_list[-10:-1])  # 列表的反向获取,不是反序获取
print(test_list[0:0])  # 切片生成空列表

test_list[0:2] = 9, 9
test_list[0:2] = [9, 9]  # 这两种方法都可以,数值一一对应就行
print(test_list)

item = test_list.pop(1)  # 删除并返回删除的值
print(item)

  输出:


[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[]
[9, 9, 2, 3, 4, 5, 6, 7, 8, 9]
9

进程已结束,退出代码0


4.pop的功能

  • 通过索引删除并获取列表的元素

5.pop的用法

  • 用法:list.pop(index)
  • 参数:index:删除列表的第几个索引
  • 函数会删除该索引的元素并返回该索引对应的值
  • 如果传入的index索引不存在则报错

6.通过del删除索引

  • del list[index]
  • 直接删除无返回值
  • 如果index(索引)不存在则报错

  实战:

  

my_list = [1, 2, 3, 4, 5]

# 使用 pop() 函数删除指定索引的元素
removed_element = my_list.pop(2)
print(removed_element)  # 输出: 3
print(my_list)  # 输出: [1, 2, 4, 5]

# 使用 del 语句删除指定索引的元素
del my_list[1]
print(my_list)  # 输出: [1, 4, 5]

在上述例子中,我们首先创建了一个列表 my_list 包含一些元素。然后,我们使用 pop() 函数将索引为 2 的元素从列表中移除,并将其存储在变量 removed_element 中。接下来,我们打印出被移除的元素和更新后的列表。

接着,我们使用 del 语句删除索引为 1 的元素(即第二个元素),并再次打印更新后的列表。使用 pop() 函数会返回被删除的元素值,而 del 语句只是直接删除元素而不返回任何值。

   

7.索引切片在元组中的特殊性

  • 可以和列表一样获取索引与切片索引
  • 元组index方法和列表用法完全一致
  • 无法通过索引修改与删除元素(因为元组是不可变对象,其内部元素的标识符是唯一的并且是不可改变的,但是元组中的可变对象自身是可以被改变的,因为元组只是包含了内部可变对象的引用,在更改元组内部的可变对象的时候,这个可变对象的内存地址仍然不发生改变)

 三.索引与切片之字符串

1.字符串的索引与获取

  • 索引规则与列表相同
  • 切片和索引的获取与列表相同
  • 无法通过索引修改与删除
  • 字符串不可修改

2.字符串的find与index函数

  •  功能:获取元素的索引位置
  • 用法:string.index(item)  or  string.find(item)
  • item:查询个数的元素,返回索引位置

3.find与index的区别

  • find如果获取不到,返回-1
  • index如果获取不到,直接报错

4.拓展

  • rfind()、rindex()从右向左查找字符串,返回字符串最后一次出现的位置
  • str[start:end]用于截取字符串

  实战:

  

# coding:utf-8

info = 'python is a good code'

result = info.find('a')
print(result)
result = info.find('ok')
print(result)

result = info.index('a')
print(result)
# result = info.index('ok')
# print(result)
# 此处会报错


  输出:


10
-1
10

进程已结束,退出代码0


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。