【Python】序列 & 列表

序列

序列的概念

  • 是一种数据结构
  • 拥有一块可以存储多个值的、连续的内存空间
  • 用于存储一组有序的数据

序列的分类

  • 可变序列:序列中的元素可以改变。eg:列表(list)、字典(dict)、集合(set)
  • 不可变序列:序列中的元素不可以改变。eg:元组(tuple)、字符串(string)

列表

列表的概念

  • 是一种对象
  • 拥有一块可以存储多个值的、连续的内存空间
  • 用于存储一组有序的数据,即列表的元素
  • 元素的数据类型不限

列表的使用

基本操作

  1. 创建列表:通过 [] 创建列表
list1 = []  # 创建空列表
list2 = [1, 2, 3, 4]
print(list1, list2)
# ----------输出----------
# [] [1, 2, 3, 4]
  1. 元素的获取:通过索引获取指定元素
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1[0], list1[3])
# ----------输出----------
# Sun WuKong Tang Monk

​ 索引为负数的话,从右往左数

list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1[-1], list1[-3])
# ----------输出----------
# Tang Monk Zhu Bajie

切片操作

用于获取列表中的子列表

语法:list [ start : end : step ] -> [ start, end ) -> 是一个左闭右开区间

list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1[1:3])
# ----------输出----------
# ['Zhu Bajie', 'Monk Sha']
  1. start:起始位置 -> 默认为 0,可不写
  2. end:结束位置 -> 默认是最后一个元素的下一个位置,可不写
  3. step:步长 -> 默认是1,可不写;不能为 0;步长为负数的话,从右往左数
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1[0:2])
print(list1[::2])
print(list1[1:3:-1])
# ----------输出----------
# ['Sun WuKong', 'Zhu Bajie']
# ['Sun WuKong', 'Monk Sha']
# ['Monk Sha', 'Zhu Bajie']

常用操作

  1. 列表的拼接 + & *****
  • + 进行列表之间的拼接
list1 = ['Sun WuKong', 'Zhu Bajie']
list2 = ['Monk Sha', 'Tang Monk']
print(list1 + list2) 
# ----------输出----------
# ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
  • ***** 指定列表的重复次数
list1 = ['Sun WuKong', 'Zhu Bajie']
print(list1 * 2) 
# ----------输出----------
# ['Sun WuKong', 'Zhu Bajie', 'Sun WuKong', 'Zhu Bajie']
  1. innot in
  • in 用于检测指定元素是否在列表中

  • not in 用于检测指定元素是否不在列表中

  • 符合返回 Ture,否则返回 Flase

list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print('Sun WuKong' in list1)
print('White bone essence' not in list1)
# ----------输出----------
# True
# True
  1. len(listName) 获取并返回元素的个数
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(len(list1))
# ----------输出----------
# 4
  1. max(listName) & min(listName) 获取列表中的最值
  • 比较的是 ASCII 大小
list1 = [1, 2, 3, 4, 5, 100, 6, 7]
print(max(list1), min(list1))
# ----------输出----------
# 100 1
list2 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(max(list2), min(list2))
# ----------输出----------
# Zhu Bajie Monk Sha
  1. sum() 可以返回数字列表的总和
list1 = [1, 2, 3, 4, 5, 100, 6, 7]
print(sum(list1))
# ----------输出----------
# 128
  1. listName**.index(Element, Start, End)** 返回指定元素在列表中第一次出现的位置
  • 始末位置是 [ Start, End ) -> 左闭右开区间,可不写
  • 找不到该元素会报错
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1.index('Monk Sha', 2, 4))
# ----------输出----------
# 2
  1. listName**.count(Element)** 返回指定元素在列表中出现的次数
list1 = ['Monk Sha', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1.count('Monk Sha'))
# ----------输出----------
# 2

列表的修改

(1)添加
  1. 调用函数 listName**.append()** 在列表的最后,追加一个元素
list1 = ['Sun WuKong', 'Zhu Bajie']
list1.append('Erlang God')
print(list1)
# ----------输出----------
# ['Sun WuKong', 'Zhu Bajie', 'Erlang God']
  1. 调用函数 listName**.insert(Index, Element)** 在列表的指定位置,插入一个元素
list1 = ['Sun WuKong', 'Zhu Bajie']
list1.insert(1, 'Erlang God')
print(list1)
# ----------输出----------
# ['Sun WuKong', 'Erlang God', 'Zhu Bajie']
  1. 调用函数 listName**.extend()** 在列表的最后,追加一个序列
list1 = ['Zhu Bajie']
list1.extend(['Wheezing dog', 'Erlang God'])
print(list1)
# ----------输出----------
# ['Zhu Bajie', 'Wheezing dog', 'Erlang God']
(2)删除
  1. 调用函数 listName**.clear()** 清空一个序列
list1 = ['Sun WuKong', 'Zhu Bajie']
list1.clear()
print(list1)
# ----------输出----------
# []
  1. 调用函数 listName**.pop(Index)** 根据索引删除并返回指定的元素,默认是最后一个元素
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1.pop(2))
print(list1)
# ----------输出----------
# Monk Sha
# ['Sun WuKong', 'Zhu Bajie', 'Tang Monk']
  1. 调用函数 listName**.remove(Element)** 移除指定的元素
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1.remove('Sun WuKong')
print(list1)
# ----------输出----------
# ['Zhu Bajie', 'Monk Sha', 'Tang Monk']
  1. 通过关键字 del ,配合索引删除指定元素
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
del list1[2]
print(list1)
# ----------输出----------
# ['Sun WuKong', 'Zhu Bajie', 'Tang Monk']

​ 配合切片可以删除一段子序列

list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
del list1[0:2]
print(list1)
# ----------输出----------
# ['Monk Sha', 'Tang Monk']
  1. 通过切片进行删除
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1[1:3] = []
print(list1)
# ----------输出----------
# ['Sun WuKong', 'Tang Monk']
(3)修改
  1. 通过索引修改元素
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1[2] = 'Erlang God'
print(list1)
# ----------输出----------
# ['Sun WuKong', 'Zhu Bajie', 'Erlang God', 'Tang Monk']
  1. 通过切片进行元素的替换

    字符串会被拆分为一个个字母

list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1[0:3] = 'abcd'
print(list1)
# ----------输出----------
# ['a', 'b', 'c', 'd', 'Tang Monk']
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1[0:3] = 'ab'
print(list1)
# ----------输出----------
# ['a', 'b', 'Tang Monk']
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1[0:2] = ['Princess Iron Fan']
print(list1)
# ----------输出----------
# ['Princess Iron Fan', 'Monk Sha', 'Tang Monk']

​ 如果设置了步长,替换的元素个数与被替换的元素个数需要一致

list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1[::2] = ['Princess Iron Fan', 'Bull Demon King']
print(list1)
# ----------输出----------
# ['Princess Iron Fan', 'Zhu Bajie', 'Bull Demon King', 'Tang Monk']
(4)排序
  1. 调用函数 listName**.sort()** 可对列表中的元素进行排序,默认是升序 ( 按照ACSII码 )
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1.sort()
print(list1)
# ----------输出----------
# ['Monk Sha', 'Sun WuKong', 'Tang Monk', 'Zhu Bajie']

​ 降序 listName**.sort(reverse=True)**

list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1.sort(reverse=True)
print(list1)
# ----------输出----------
# ['Zhu Bajie', 'Tang Monk', 'Sun WuKong', 'Monk Sha']
  • 函数 sorted( array ) 可对序列进行排序,并返回排序后的新序列,原序列不变。
list1 = [5, 2, 3, 1, 4]
print(sorted(list1, reverse=True))  # 倒序
print(list1)
# ----------输出----------
# [5, 4, 3, 2, 1]
# [5, 2, 3, 1, 4]
  1. 调用函数 listName**.reverse()** 颠倒原列表的排序
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list1.reverse()
print(list1)
# ----------输出----------
# ['Tang Monk', 'Monk Sha', 'Zhu Bajie', 'Sun WuKong']
  • 函数 reversed( array ) 可对序列进行排序,并返回一个反转的迭代器,原序列不变。
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(reversed(list1))
print(next(reversed(list1)))
print(list1)
# ---------- 输出 ----------
# <list_reverseiterator object at 0x000002A83F468048>
# Tang Monk
# ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
  1. 通过切片 listName**[::-1]** 设置负步长,将原列表反向取出,原序列不变。
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
print(list1[::-1])
# ----------输出----------
# ['Tang Monk', 'Monk Sha', 'Zhu Bajie', 'Sun WuKong']
(5)复制
  1. 使用切片拷贝列表,获得的列表 value 一样,id 不一样
list1 = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
list2 = list1[:]
list2.append('Tang Monk')
print(list1)
print(list2)
# ----------返回----------
# ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
# ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk', 'Tang Monk']
  1. 使用函数 copy() 实现拷贝
list1 = [5, 2, 3, 4, 1]
list2 = list1.copy()
print(list1, id(list1))
print(list2, id(list2))
# ----------返回----------
# [5, 2, 3, 4, 1] 2479350096520
# [5, 2, 3, 4, 1] 2479350926280

for in 循环

可与序列配合使用,进行遍历操作

语法:for value in array : code block
① value:array 中的元素;② array:进行遍历的序列

students = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
for student in students:
    print(student)
# ----------返回----------
# Sun WuKong
# Zhu Bajie
# Monk Sha
# Tang Monk

enumerate() 函数

配合 for in 循环 使用,可以在取出元素的时候,把索引也取出

students = ['Sun WuKong', 'Zhu Bajie', 'Monk Sha', 'Tang Monk']
for index, value in enumerate(students):
    print(index, value)
# ----------返回----------
# 0 Sun WuKong
# 1 Zhu Bajie
# 2 Monk Sha
# 3 Tang Monk

range ( start, end, step )

① start:开始位置 -> 默认为 0 -> 可不写;② end:结束位置;③ step:步长 -> 默认为 1 -> 可不写

用于生成 [ start, end ) 的一系列数字

for value in range(5):
    print(value)
# ----------返回----------
# 0
# 1
# 2
# 3
# 4

可用 list() 将这些数字转换为列表

numbers = list(range(0, 5, 1))
print(numbers)
# ----------返回----------
# [0, 1, 2, 3, 4]

列表推导式

用于以较少的代码,创建一些特殊列表

语法:listName = [expression for value in array]
① expression:返回的元素值,写的是表达式;② value:序列中元素的值;③ array:遍历的序列

eg:创建并返回一个由1~10的平方组成的列表

squares = [value**2 for value in range(1, 11)]
print(squares)
# ----------返回----------
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

元组、字典 & 集合

【Python】元组、字典 & 集合

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JS.Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值