写点什么

软件测试 / 测试开发丨 Python 常用数据结构 - 列表

作者:测试人
  • 2023-06-13
    北京
  • 本文字数:2130 字

    阅读完需:约 7 分钟

获取更多相关知识

本文为霍格沃兹测试开发学社学员学习笔记分享,文末附原文链接。

一、列表

1、列表使用:索引

  • 默认正向索引,编号从 0 开始。

  • 支持反向索引,编号从-1 开始。

2、 列表使用:切片

  • 切片 [start: stop: step]

3、 列表使用:运算符

  • 使用 * 运算符可以重复生成列表元素。

  • 使用 + 加号运算符,可以将两个列表合二为一。

# 1、重复li = [1] * 5print(li)  # 结果为[1, 1, 1, 1, 1]
# 2、合并li1 = [1, 2, 3]li2 = [99, 100]print(li1 + li2) # 结果为[1, 2, 3, 99, 100]
复制代码

4、列表使用:成员检测

  • in:检查一个对象是否在列表中,如果在则返回 True,否则返回 False。

  • not in:检查一个列表是否不包含某个元素。如果不在返回 True,否则返回 False。

li = [1, 2, 3]
# inprint(1 in li) # 结果为Trueprint(100 in li) # 结果为False
# not inprint(1 not in li) # 结果为Falseprint(100 not in li) # 结果为True
复制代码

5、 列表方法 append()

  • append(item):将一个对象 item 添加到列表的末尾。

  • 入参:对象 item

  • 返回:None

# 添加元素li = []li.append(1)li.append(3.14)li.append("hogwarts")li.append([6, 6, 6])li.append((1.2, 1.5))li.append({'msg': "Hello"})
print(li) # 结果为:[1, 3.14, 'hogwarts', [6, 6, 6], (1.2, 1.5), {'msg': 'Hello'}]print(len(li)) # 获取列表元素个数 6
复制代码

6、 列表方法 extend()

  • extend(iterable):将一个可迭代对象的所有元素,添加到列表末尾。

  • 入参:可迭代对象 iterable

  • 返回:None

# extend()的用法li = []li.extend('hogwarts')  # 添加的是字符串的所有字母li.extend([1, 2, 3])  # 接收列表的所有元素li.extend((4, 5, 6))  # 接收元组的所有元素li.extend({'a': 1, 'b': 2})  # 接收字典的所有key值print(li) #结果为:['h', 'o', 'g', 'w', 'a', 'r', 't', 's', 1, 2, 3, 4, 5, 6, 'a', 'b']
复制代码

7、 列表方法 insert()

  • insert(index, item):将一个对象插入到指定的索引位置

  • 入参:索引值 index ,一个对象 item

  • 返回:None

  • 原索引位置及后面的元素后移一位

li = [0, 1, 2]print("插入前: ", li)  # 结果为 [0, 1, 2]
# 在索引0的位置插入元素li.insert(0, 'hogwarts')print("插入后: ", li) # 结果为 ['hogwarts', 0, 1, 2]
复制代码

8、 列表方法 pop()

  • pop(index) 或 pop()

  • 弹出并返回所指定索引的元素。

  • 入参:索引值 index,可不传

  • 返回:指定索引的元素

  • 返回:未指定索引则返回末尾元素

  • 如果索引值不正确,或者列表已经为空,则引发 IndexError 错误

letters = ['h', 'o', 'g', 'w', 'a', 'r', 't', 's']
# 传入索引3,弹出元素 wn1 = letters.pop(3)print(n1) # 打印 w
# 不传参数,默认弹出末尾元素n2 = letters.pop()print(n2) # 打印 s
复制代码

9、 列表方法 remove()

  • remove(item)

  • 移除列表中第一个等于 item 的元素

  • 入参:指定元素 item

  • 返回:None

  • 目标元素必须已存在,否则会报 ValueError

li = ['h', 'o', 'g', 'w', 'a', 'r', 't', 's']print(len(li))  # 打印 8
# 1、删除指定元素'h'li.remove('h')print(li) # 打印 ['o', 'g', 'w', 'a', 'r', 't', 's']print(len(li)) # 打印 7
# 2、移除第一个2li = [1, 2, 3, 2, 1]li.remove(2)print(li) # 打印 [1, 3, 2, 1]
# 3、删除不存在的元素,会报ValueError错误li = [1, 2, 3]li.remove(100) #会报ValueError错误
复制代码

10、 列表方法 sort()

  • sort(key=None, reverse=False)

  • 对列表进行原地排序,只使用 < 来进行各项间比较。

  • 入参:支持 2 个关键字参数:key:指定带有一个参数的函数,用于从每个列表元素中提取比较键。reverse:默认值为 False 表示升序,为 True 表示降序

  • 返回:None

nums = [2, 4, 3, 1, 5]
# 1、不传参数,默认升序,数字从小到大排列nums.sort()print(nums) # 打印 [1, 2, 3, 4, 5]
# 2、指定key=len,按元素的长度排序words = ['Python', 'Java', 'R', 'Go']words.sort(key=len)print(words) # 打印 ['R', 'Go', 'Java', 'Python']
# 3、指定reverse=True,降序nums = [2, 4, 3, 1, 5]nums.sort(reverse=True)print(nums) # 打印 [5, 4, 3, 2, 1]
复制代码

11、 列表方法 reverse()

  • reverse():将列表中的元素顺序反转

  • 参数:无

  • 返回:None

  • 反转只是针对索引值,元素之间不相互比较

# 反转顺序nums = [8, 1, 5, 2, 77]nums.reverse()print(nums)  # 打印[77, 2, 5, 1, 8]
复制代码

12、 列表嵌套

  • 嵌套列表是指在列表里存放列表

  • 列表的常用方法都适用于嵌套列表

# 1、创建嵌套列表li_2d = [['a', 'b', 'c'], [1, 2, 3]]print(type(li_2d))  # 打印<class 'list'>print(len(li_2d))  # 打印 2
# 2、访问嵌套列表中的元素print(li_2d[0][2]) # 打印 'c'
复制代码

13、 列表推导式

  • 列表推导式是指循环创建列表,相当于 for 循环创建列表的简化版

  • 语法:[x for x in li if x ...]

"""实例:将 1-10 中的所有偶数平方后组成新的列表"""# 1、传统解决方案result = []for ele in range(1, 11):    if ele % 2 == 0:        result.append(ele ** 2)print(result)  # 打印 [4, 16, 36, 64, 100]
# 2、使用列表推导式result = [ele ** 2 for ele in range(1, 11) if ele % 2 == 0]print(result) # 打印 [4, 16, 36, 64, 100]
复制代码


原文链接:https://ceshiren.com/t/topic/24499

发布于: 刚刚阅读数: 5
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Python 常用数据结构-列表_Python_测试人_InfoQ写作社区