list列表

本文详细介绍了Python列表的基础知识,包括定义、查找元素、添加元素、列表切片、删除与修改元素、相关操作以及函数。通过实例展示了列表的创建、遍历、添加、删除、修改、排序和切片等操作,还涵盖了列表的数学运算、比较、长度获取、类型转换和列表推导式。此外,还提供了几个列表操作的示例和练习题,帮助读者深入理解列表的使用。
摘要由CSDN通过智能技术生成

list列表

列表基础知识

1.列表定义

  1. 列表长什么样子:列表是容器型数据类型(序列);将[]作为容器的标志,里面多个元素用逗号隔开: [元素1, 元素2, 元素3,…]
  2. 列表的特点:列表是可变的(元素的个数、值和顺序可变) - 增、删、改;列表是有序的 - 支持下标操作
  3. 列表对元素的要求: 没有要求(不管什么类型的数据都可以作为列表的元素)
1)空列表

len(列表) - 获取列表中元素的个数

list1 = []
list2 = [ ]
2)列表可以同时保存多个数据
list3 = [89, 90, 76, 99, 58]

2.查找元素

查分为三种情况:获取单个元素、切片、遍历(一个一个的取)

1)获取单个元素

**语法:**列表[下标]
**功能:**获取列表中指定下标对应的元素
说明:
列表 - 任何结果是列表的表达式,比如:保存列表的变量、具体的列表值等
[] - 固定写法
下标 - 下标又叫索引,是元素在有序序列中位置信息。
Python中有序序列中每个元素都有两组下标值,分别是:从前往后从0开始递增的下标值;从后往前从-1开始递减的下标值
注意:下标不能越界

names = ['甄姬', '貂蝉', '韩信', '吕布', '赵云', '后裔', '鲁班', '狄仁杰']
print(names[1])
print(names[-1])
print(names[3])
2)遍历

方式1 - 直接获取列表中的每个元素
for 元素 in 列表:
循环体

方式2 - 先获取到每个元素的下标值,然后通过下标再获取元素
for 下标 in range(len(列表)):
循环体

for 下标 in range(-1, -len(列表)-1, -1):
循环体

range(len(列表)) == range(列表中元素的个数)

方式3 - 同时获取列表中每个元素和元素对应的下标
for 下标, 元素 in enumerate(列表):
循环体

names = ['甄姬', '貂蝉', '韩信', '吕布', '赵云', '后裔', '鲁班', '狄仁杰']
print('-------------------------------华丽的分隔线--------------------------------')
for x in names:
    print(x)

print('-------------------------------华丽的分隔线--------------------------------')
for index in range(len(names)):
    print(index, names[index])

print('-------------------------------华丽的分隔线--------------------------------')
for index, item in enumerate(names):
    print(index, item)

3.添加元素

1) 添加单个元素

列表.append(元素) - 在列表的最后添加一个元素
列表.insert(下标, 元素) - 在指定下标对应的元素前插入指定元素

movies = ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']
print(movies)       # ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪']

movies.append('肖生克的救赎')
print(movies)       # ['五十六度灰', '哥斯拉大战金刚', '桃花侠大战菊花怪', '肖生克的救赎']

movies.insert(2, '沉默的羔羊')
print(movies)  
2)批量添加

列表1.extend(列表2) - 将列表2元素全部添加到列表1的后面

movies.extend(['让子弹飞', '触不可及', 'V字仇杀队'])
print(movies)

4.列表切片

1)基础讲解

语法:
列表[开始下标:结束下标:步长]
说明:
开始下标 - 下标值(0开始的和-1开始的都行);确定切片有效范围的起点,可以取到
: - 固定写法
结束下标 - 下标值(0开始的和-1开始的都行);确定切片有效范围的终点,取不到
步长 - 1)决定切片的方向(步长对应的方向必须和开始到结束的方向一致,否则切片结果为空)
2)决定获取元素的方式(一个的一个的取还是跳着取)

注: 切片的有效范围是: [开始下标, 结束下标)

games = ['王者荣耀', '和平精英', '生化危机', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗']
print(games[1:5:1])   # ['和平精英', '生化危机', '原神', '诛仙']
print(games[1:-1:1])   # ['和平精英', '生化危机', '原神', '诛仙', '穿越火线', '部落冲突', '红警']
print(games[3:-1:-1])   # []
print(games[-1:-5:1])   # []
print(games[0:-3:2])    # ['王者荣耀', '生化危机',  '诛仙']
print(games[-1:2:-2])   # ['魂斗罗', '部落冲突', '诛仙', ]
print(games[2:-1:1])    # ['生化危机', '原神', '诛仙', '穿越火线', '部落冲突', '红警']
2)省略步长

列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]

省略步长,步长就是1

games = ['王者荣耀', '和平精英', '生化危机', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗']
print(games[2:-2])      # ['生化危机', '原神', '诛仙', '穿越火线', '部落冲突']
3)省略开始下标

列表[:结束下标:步长] / 列表[:结束下标]

省略开始下标:如果步长为正,从第一个元素开始往后取;如果步长为负,从最后一个元素开始往前取

print(games[:-3])       # ['王者荣耀', '和平精英', '生化危机', '原神', '诛仙', '穿越火线']
print(games[:3:-1])     # ['魂斗罗', '红警', '部落冲突', '穿越火线', '诛仙']
4)省略结束下标

列表[开始下标::步长] / 列表[开始下标:]

省略结束下标:如果步长为正,从开始下标开始取到最后一个元素;如果步长为负,从开始下标开始取到第一个元素

print(games[1:])        # ['和平精英', '生化危机', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗']
print(games[3::2])      # ['原神', '穿越火线', '红警']
print(games[-2::-1])    # ['红警', '部落冲突', '穿越火线', '诛仙', '原神', '生化危机', '和平精英', '王者荣耀']
5)一起省

列表[::步长]/ 列表[:]

print(games[::-1])      # ['魂斗罗', '红警', '部落冲突', '穿越火线', '诛仙', '原神', '生化危机', '和平精英', '王者荣耀']
print(games[::2])       # ['王者荣耀', '生化危机', '诛仙', '部落冲突', '魂斗罗']
print(games[:])         # ['王者荣耀', '和平精英', '生化危机', '原神', '诛仙', '穿越火线', '部落冲突', '红警', '魂斗罗']

5.列表删除

1) del 列表[下标]

del 列表[下标] - 删除列表中指定下标对应的元素

注:下标不能越界

del teleplays[2]
2) 列表.remove(元素) - 删除列表中指定元素

**注意:**a. 如果元素不存在, 会报错 b. 如果元素有多个,只删第一个

teleplays.remove('琅琊榜')
3)列表.pop()

列表.pop() - 取出列表最后一个元素

列表.pop(下标) - 取出列表中指定下标对应的元素

teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
del_item = teleplays.pop()
print(teleplays)        # ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸']
print(del_item)
del_item = teleplays.pop(1)
print(teleplays)      # ['琅琊榜', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸']
print(del_item)
4) 列表.clear()

列表.clear() - 将列表清空

teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
teleplays.clear()
print(teleplays)

6.列表修改

teleplays = ['琅琊榜', '大秦', '回家的诱惑', '康熙王朝', '破产姐妹', '亮剑', '生活大爆炸', '西游记']
print(teleplays)
teleplays[0] = '庆余年'
print(teleplays)

7.列表相关操作

1)数学运算符:
+、*

列表1 + 列表2 - 将列表1和列表2合并成一个新的列表

列表1 * N / N * 列表1 - 将N个列表1合并产生一个新的列表

print([1, 2, 3] + [10, 20, 30])

list1 = [100, 200]
list2 = [1000, 2000]
print(list1 + list2, list1)
print(list1 * 3)
2)比较运算符
列表1 ==、!= 列表2
print([1, 2, 3] == [1, 2, 3])       # True
print([1, 2, 3] == [1, 3, 2])       # False
print({1, 2, 3} == {1, 3, 2})       # True, 集合无序
列表1 >(<、>=、<=) 列表2

两个列表比较大小的原理: 比较的是第一对儿不相等的元素的大小(两个列表下标相同的元素为一对儿,这个下标是0开始的下标)

print([1, 200, 300, 400, 500] > [10, 2])        # False
print([11, 0, 0, 0, 0] > [10, 2])           # True
in 和 not in

元素 in 列表 - 判断列表中是否存在指定元素

元素 not in 列表 - 判断列表中是否不存在指定元素

print(10 in [10, 20, 30])       # True
print([10, 20] in [10, 20, 30])   # False
print([10, 20] in [[10, 20], 30])   # True

8.相关函数

列表相关方法: copy、count、index、reverse、sort

1)列表.count(元素)

列表.count(元素) - 统计列表中指定元素的个数

nums = [10, 20, 30, 4, 10, 20, 10, 10]
print(nums.count(10))    # 4
print(nums.count(4))     # 1
print(nums.count(100))   # 0
2) 列表.index(元素)

列表.index(元素) - 获取元素第一次出现在列表中的下标(下标是0开始的下标值)

print(nums.index(10))   # 0
print(nums.index(20))   # 1
print(nums.index(4))    # 3
3) 列表.reverse()

列表.reverse() - 倒序

nums = [10, 20, 5, 2, 100]
nums.reverse()
print(nums)     # [2, 5, 20, 10]
4)列表.sort()

列表.sort() - 将列表中的元素从小到大排序

列表.sort(reverse=True) - 将列表中的元素从大到小排序

nums = [10, 20, 5, 2, 100]
nums.sort(reverse=True)
print(nums)     # [100, 20, 10, 5, 2]
5) 列表.copy()

列表.copy() - 赋值列表产生一个元素一模一样的新列表

list1 = [10, 20, 30]
print(list1)     # [10, 20, 30]
list2 = list1
print(list2)     # [10, 20, 30]
list3 = list1.copy()
print(list3)     # [10, 20, 30]

注意:直接赋值列表,地址不变,所以数据一变,都会改变

列表相关函数

1. max、min - 求最大值、最小值

max(序列)

nums = [34, 89, 78, 56, 90, 23]
print(max(nums), min(nums))

2. sum - 求数字序列中元素的和

sum(序列)

print(sum(nums))

3. sorted - 排序;不修改原序列中元素的顺序而是产生一个新的列表

sorted(序列); sorted(序列, reverse=True)

nums = [34, 89, 78, 56, 90, 23]
new_nums = sorted(nums)
print(nums)         # [34, 89, 78, 56, 90, 23]
print(new_nums)     # [23, 34, 56, 78, 89, 90]

列表.sort();列表.sort(reverse=True)

nums = [34, 89, 78, 56, 90, 23]
result = nums.sort()
print(nums) # [23, 34, 56, 78, 89, 90]
print(result) # None

4. len - 获取序列中元素的个数

len(序列)

print(len(nums))

5. list - 列表类型转换

list(序列) - 所有的序列都可以转换成列表;转换的时候直接将序列中的元素转换成列表的元素

print(list('abc'))      # ['a', 'b', 'c']
print(list(range(3)))   # [0, 1, 2]

列表推导式

[表达式 for 变量 in 序列]

list1 = [10 for x in range(4)]
print(list1)        # [10, 10, 10, 10]

list2 = [x for x in range(4)]
print(list2)        # [0, 1, 2, 3]

list3 = [x * 2 + 1 for x in range(4)]
print(list3)        # [1, 3, 5, 7]

scores = [89, 67, 34, 56, 10, 90]
list4 = [x % 10 for x in scores]
print(list4)    # [9, 7, 4, 6, 0, 0]

list5 = [x >= 60 for x in scores]
print(list5)    # [True, True, False, False, False, True]

scores = [89, 67, 34, 56, 10, 90]
list6 = [x*2 for x in scores]
print(list6)    # [178, 134, 68, 112, 20, 180]

[表达式 for 变量 in 序列 if 条件语句]

list7 = [10 for x in range(4) if x % 2]
print(list7)        # [10, 10]

list8 = [x for x in range(4) if x % 2]
print(list8)    # [1, 3]

scores = [89, 67, 34, 56, 10, 90]
list9 = [x for x in scores if x >= 60]
print(list9)        # [89, 67, 90]

[表达式 for 变量 in 序列 if 条件语句]

nums = [89, 67, 34, 56, 10, 90, 35]
new_nums = [x if x % 2 else x // 2 for x in nums]     # x//2, x
print(new_nums)

作业

day6-列表作业

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值