python基础 - 5、列表的相关知识

day5 - 列表的相关知识

今日继续学习列表的相关知识,主要内容包括列表切片、列表主要的方法在这里插入图片描述

1、列表

1)什么是列表

容器型的数据类型(序列),用[]作为容器标志,元素间用逗号隔开:[元素1, 元素2, 元素3, ...]
语法:列表中的元素从0开始,0表示第一个元素,1表示第二个元素,...,以此类推
​ 可以从-1开始:-1表示倒数第一个,-2表示倒数第二个, ...
列表中的元素:可以是任何类型的数据,
​ 元素的值和元素的个数都是可变的
​ 列表中的元素是有顺序的

2)列表的基本操作 - 增删查改

示范用例:movies = ['八佰', '花木兰', '信条', '星际穿越', '盗梦空间', '肖申克的救赎']

a.查 - 获取列表里的元素:
  • 单个查询 - 列表[下标]:

    movies[2]    # 信条
    
  • 遍历

    • 遍历整个列表
    movies = ['八佰', '花木兰', '信条', '星际穿越', '盗梦空间', '肖申克的救赎']
    for x in movies:
        print(x, end=' ')  # 八佰 花木兰 信条 星际穿越 盗梦空间 肖申克的救赎 
    
    • 遍历列表的下标来获取元素
      这种方式获取元素更灵活,可以只选取列表里需要的元素,而不必去遍历整个列表
    for i in range(5):
        print(movies[i], end=' ')  # 八佰 花木兰 信条 星际穿越 盗梦空间 肖申克的救赎 
        
    for i in range(1, 5, 2):
        print(movies[i], end=' ')  # 花木兰 星际穿越 
    
    • 遍历同时获取元素的下标和元素 - 使用enumetate()函数:
      语法:enumerate(sequence, [start=0]) - sequence:可遍历数据对象 start:下标起始位置
      作用:将可遍历的数据对象(列表、元组或字符串)组合成一个索引序列,同时列出数据下标和数据
    for i, j in enumerate(movies):
        print(i, j,  end=',')  # 0 八佰,1 花木兰,2 信条,3 星际穿越,4 盗梦空间,5 肖申克的救赎,
    
    for i, j in enumerate(movies, 3):
        print(i, j,  end=',')  # 3 八佰,4 花木兰,5 信条,6 星际穿越,7 盗梦空间,8 肖申克的救赎,
    
b.增 - 增加元素
  • 列表.append(元素) - 在列表的末尾新增元素

    movies.append('夺冠')
    for x in movies:
        print(x, end=' ')  # 八佰 花木兰 信条 星际穿越 盗梦空间 肖申克的救赎 夺冠 
    
  • 列表.insert(下标, 元素) - 在指定下标的前面插入元素

    movies.insert(2, '禁闭岛')
    for x in movies:
        print(x, end=' ')  # 八佰 花木兰 禁闭岛 信条 星际穿越 盗梦空间 肖申克的救赎 夺冠
    
c.删 - 删除元素
  • del 列表[下标] - 删除指定下标位置的元素

    del movies[1]
    for x in movies:
        print(x, end=' ')  # 八佰 禁闭岛 信条 星际穿越 盗梦空间 肖申克的救赎 夺冠 
    
  • 列表.remove(元素) - 定位第一个符合要求的元素并删除(也就是有多个重复值时删除最前的那个)

    movies.remove('星际穿越')
    for x in movies:
        print(x, end=' ')  # 八佰 禁闭岛 信条 盗梦空间 肖申克的救赎 夺冠 
    
  • 列表.pop() - 取出列表末尾的元素
    列表.pop(下标) - 取出列表中下标对应的元素

    movies.pop()
    for x in movies:
        print(x, end=' ')  # 八佰 禁闭岛 信条 盗梦空间 肖申克的救赎
    
    movies.pop(2)
    for x in movies:
        print(x, end=' ')  # 八佰 禁闭岛 盗梦空间 肖申克的救赎 
    

    注意:3个删除之间的相同的和不同点
    相同点:
    ​ 都能达到删除列表中对应元素的目的,都不能删除列表中不存在的元素或者不存在的下标对应的元素
    不同点:
    ​ del/remove都是直接从内存空间删除掉元素,而pop是将元素取出,并没有直接删除,如果将取出的元素赋值给变量,还可以接着使用该值(若没有用变量来保存,该变量也会自然消亡,不会占用内存)

d.改 - 修改元素
  • 列表[下标] - 修改指定下标对应的元素

    movies[3] = '泰坦尼克号'
    for x in movies:
        print(x, end=' ')  # 八佰 禁闭岛 盗梦空间 泰坦尼克号
    
3)列表相关操作 - 运算
1)加法运算

列表1 + 列表2 - 将几个相加的列表的元素首尾相接合在一起,合并产生一个新的序列,顺序和加的顺序一致

list1 = [1, 2, 3, 4]
list2 = [23, 45, 53]
print(list1+list2)   # [1, 2, 3, 4, 23, 45, 53]
print(list2+list1)   # [23, 45, 53, 1, 2, 3, 4]
2)乘法运算

列表 * N / N * 列表 - 将列表重复N次,然后结合形成一个新的列表

list1 = [1, 2, 3, 4]
list2 = [23, 45, 53]
print(2*list1)   # [1, 2, 3, 4, 1, 2, 3, 4]
print(list1*3)   # [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
3)比较运算

比较大小 / 比较相等

 * 比较大小(>、<、>=、<=)  -  取列表中第一对不相等的元素,大的元素对应的列表大(进行对比的元素需要是同类型的数据(文本、数字))
list1 = [23, 50, 3, 4, 1]
list2 = [23, 45, 53]
print(list1 > list2)   # True

list1 = [1, 50, 3, 4, 1]
list2 = [23, 45, 53]
print(list1 > list2)   # False
  • 比较相等 - 列表元素的类型、大小、个数、顺序需要完全一样
list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4]
list3 = [1, 2, '3', 4]
print(list1 == list2, list2 == list3)   # True False
4)in / not in

​ 1、in - 判断元素是否在列表里(类型和大小)
​ 2、not in - 判断元素是否不在列表里

list1 = [1, 2, 3, [5, 6]]
print(1 in list1, [1] in list1, 5 in list1, [5, 6] in list1, )   # True False False True
5)函数
# 函数和方法所用的示例列表
scores = [98, 62, 54, 49,68, 89, 75, 32]
函数作用示例
sum(列表)计算列表中所有元素的和scores = [98, 62, 54, 49,68, 89, 75, 32]
sum(scores) # 527
max(列表)求出列表中的最大值max(scores) # 98
min(列表)求出列表中的最小值min(scores) # 49
len(列表)计算列表的长度(元素的个数)len(scores) # 8
list(序列)将其他序列转换成列表(转换的内容必须是序列)list(‘abc’) # [‘a’, ‘b’, ‘c’]
sorted(列表, reverse=True/False)对列表排序(False - 升序 True - 降序, 默认是False)
创建新的列表,不修改原表
sorted(scores)
# [32, 49, 54, 62, 68, 75, 89, 98]

print(sorted(scores, reverse=True))
# [98, 89, 75, 68, 62, 54, 49, 32]

2、切片

1)语法:

切片 - 获取列表中的部分元素(一次性获取多个元素)
列表[开始下标:结束下标:步长] - 从开始下标开始取元素到结束下标为止,每次下标增加步长(默认是1)获取下一个元素
注意:
1)切片的结果是一定是列表
2)结束下标一定取不到,取不到元素就是空列表
2)步长的正负决定取数的方向:
步长为正 - 从前往后取,结束下标一定在开始下标的后面,否则结果为空
步长为负 - 从后往前取,结束下标一定在开始下标的前面,否则结果为空

list1 = [98, 45, 34, 89, 23, 67, 23, 9, 54, 100, 78]
print(list1[1:5:1])     # [45, 34, 89, 23]
print(list1[2:9:2])     # [34, 23, 23, 54]
print(list1[3:3:1])     # []
print(list1[1:4:-1])    # []
print(list1[1:-1:-1])   # []
print(list1[-2:1:-2])   # [100, 9, 67, 89]
2)切片相关操作
fruits = ['苹果', '香蕉', '猕猴桃', '橘子', '石榴', '葡萄']
切片示例
列表[开始下标:结束下标] - 省略步长fruits = [‘苹果’, ‘香蕉’, ‘猕猴桃’, ‘橘子’, ‘石榴’, ‘葡萄’]
print(fruits[1:4]) # [‘香蕉’, ‘猕猴桃’, ‘橘子’]
print(fruits[-3:-1]) # [‘猕猴桃’, ‘橘子’]
print(fruits[-1:2]) # []
列表[:结束下标:步长] - 省略开始下标
根据步长的正负决定取数的方向和开始下标是0开始-1
print(fruits[:4]) # [‘苹果’, ‘香蕉’, ‘猕猴桃’, ‘橘子’]
print(fruits[:3:-2]) # print(fruits[-1:3:-2]) -> [‘葡萄’]
print(fruits[:2:-1]) # [‘葡萄’, ‘石榴’, ‘橘子’]
print(fruits[:3:2]) # [‘苹果’, ‘猕猴桃’]
列表[开始下标::步长] - 省略结束下标fruits = [‘苹果’, ‘香蕉’, ‘猕猴桃’, ‘橘子’, ‘石榴’, ‘葡萄’]
print(fruits[2:]) # [‘猕猴桃’, ‘橘子’, ‘石榴’, ‘葡萄’]
print(fruits[-3::-1]) # [‘橘子’, ‘猕猴桃’, ‘香蕉’, ‘苹果’]
print(fruits[3::-2]) # [‘橘子’, ‘香蕉’]
列表[::-1] - 省略开始下标和结束下标 - 将列表倒置
产生新的列表
print(fruits[::-1]) # [‘葡萄’, ‘石榴’, ‘橘子’, ‘猕猴桃’, ‘香蕉’, ‘苹果’]

3、列表的方法

# 函数和方法所用的示例列表
scores = [98, 62, 54, 49,68, 89, 75, 32]
方法作用示例(操作+操作后列表内容)
列表.append(元素)在列表末尾添加指定元素scores = [98, 62, 54, 49,68, 89, 75, 32]
scores.append(98)
# [98, 62, 54, 49, 68, 89, 75, 32, 98]
列表.insert(下标, 元素)在添加元素到指定下标对应的位置scores.insert(3, 56)
# [98, 62, 54, 56, 49, 68, 89, 75, 32, 98]
列表.extend(序列)在列表末尾扩展序列,可以同时添加多个元素(这个元素是一个序列)scores.extend([28, 56, 87])
# [98, 62, 54, 56, 49, 68, 89, 75, 32, 98, 28, 56, 87]
列表.remove(元素)删除指定元素 - 直接从内存中删除scores.remove(max(scores))
# [62, 54, 56, 49, 68, 89, 75, 32, 98, 28, 56, 87]
列表.pop(元素)去除指定元素 - 只是去除,并未直接删除scores.pop(28)
# [62, 54, 56, 49, 68, 89, 75, 32, 98, 56, 87]
列表.sort(reverse=True/False)排序 - 直接在原表上操作,修改原表scores.sort()
# [32, 49, 54, 56, 56, 62, 68, 75, 87, 89, 98]
列表.reverse()将列表倒置 - 直接修改原表,而列表[::-1]不修改原表,产生新的列表scores.reverse()
# [98, 89, 87, 75, 68, 62, 56, 56, 54, 49, 32]
列表.count(元素)统计元素在对应列表中出现的次数print(scores.count(56)) # 2
列表.index(元素)查看元素在列表中对应的索引位置print(scores.index(75)) # 3
列表.clear()清除列表中全部内容,直接从内存删除print(scores.clear()) # None
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值