目录
一、基本介绍
1、列表可以存放多个不同的数据类型,即:列表就是一列数据(多个数据)
2、列表也是一种数据类型
二、列表的定义
1、列表的定义
创建一个列表,只要用逗号分隔的不同的数据项使用方括号括起来即可,示例如下:
list1=[100,200,300,400,500]
list2=['red','green','blue','yellow','white','black']
2、内存图说明
3、代码说明
# 列表的定义
"""
1、定义一个列表,名字叫 list1,值为[100,200,300,400,500]
2、100就是其中的一个数据/元素
"""
list1 = [100, 200, 300, 400, 500]
# 输出列表数据
print(list1) # [100, 200, 300, 400, 500]
# 输出列表的数据类型
print(type(list1)) # list
三、列表的使用
1、列表的使用语法
列表名[索引]
2、举例说明
list2=['red','green','blue','yellow','white','black']
比如:要使用list2列表的第3个值"blue",则通过 list2[2] 就可以访问到
提示:注意索引是从0开始计算的
3、代码演示,访问/获取第3个数据/元素
# 列表的使用语法
list2=['red','green','blue','yellow','white','black']
# 列出所有的数据
print(list2) # ['red','green','blue','yellow','white','black']
# 访问/获取第3个数据/元素
print("第3个元素是:", list2[2]) # blue
四、列表的遍历
1、什么是列表的遍历
简单的说,就是将列表的每个元素依次取出,进行处理的操作,就是遍历/迭代
2、实例:使用while循环,对列表进行遍历输出
# while 遍历列表
"""
思路分析:
1、先定义一个变量 index=0,表示从第一个元素开始取出
2、列表list_color的个数为6,这里其实有一个内置函数 len(列表),可以返回个数
3、每取出一个就输出/或者根据自己的业务处理
"""
list_color = ['red', 'green', 'blue', 'yellow', 'white', 'black']
# print(len(list_color)) # 6
# 先定义一个变量 index=0,表示从第一个元素开始取出
index = 0
while index<len(list_color):
print(f"第 {index+1} 个元素是:{list_color[index]}")
index+=1
3、实例:使用for循环,对列表进行遍历输出
# for 遍历列表
"""
思路分析:
1、因为for循环是直接从列表中依次取出,所以直接操作即可
2、每取出一个就输出/或者根据自己的业务处理
"""
list_color = ['red', 'green', 'blue', 'yellow', 'white', 'black']
for ele in list_color:
print(f"元素是:{ele}")
五、列表解决养鸡场问题
养鸡场问题:一个养鸡场有6只鸡,它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg。请问这六只鸡的总体重是多少?平均体重是多少?
# 使用列表解决养鸡场问题
hens = [3, 5, 1, 3.4, 2, 50]
# 计算总的体重
total_weight = 0
# 遍历 hens
for ele in hens:
# 累加
total_weight+=ele
print(f"总体重:{total_weight} 平均体重:{round(total_weight/len(hens),2)}")
# 总体重:64.4 平均体重:10.73
六、注意事项和使用细节
1、如果我们需要一个空列表,可以通过 [ ],或者 list() 方式来定义
# 1、如果我们需要一个空列表,可以通过 [ ],或者 list() 方式来定义
list1=[]
list2=list()
print(list1,type(list1)) # [] <class 'list'>
print(list2,type(list2)) # [] <class 'list'>
2、列表的数据项可以有多个,而且数据类型没有限制
# 2、列表的数据项可以有多个,而且数据类型没有限制
list3 = [100, "jack", 4.5, True]
print(list3) # [100, 'jack', 4.5, True]
# 嵌套列表
list4 = [100, "tom", ["天龙八部", "笑傲江湖", 300]]
print(list4) # [100, 'tom', ['天龙八部', '笑傲江湖', 300]]
3、列表的索引/下标是从0开始的
4、列表索引必须在指定范围内使用,否则报:IndexError: list index out of range
# 4、列表索引必须在指定范围内使用
# 有效下标为0-2
list5=[1,2.1,'jack']
# 索引越界
# print(list5[3])
5、索引也可以从尾部开始,最后一个元素的索引为-1,往前为-2,以此类推
# 5、索引也可以从尾部开始,最后一个元素的索引为-1,往前为-2,以此类推
list1 = [1, 2.1, 'jack']
print(list1[-1]) # jack
print(list1[-2]) # 2.1
# 依然不能索引越界
# print(list1[-4])
6、通过 列表[索引]=新值 对数据进行修改,使用 列表.append(值) 方法来添加元素,使用 del 语句来删除列表的元素,注意不能超出有效索引的范围
list_a=["天龙八部", "笑傲江湖"]
print("list_a:", list_a) # list_a: ['天龙八部', '笑傲江湖']
# 通过 列表[索引]=新值 对数据进行修改
list_a[0]="雪山飞狐"
print("list_a:", list_a) # list_a: ['雪山飞狐', '笑傲江湖']
# 使用 列表.append(值) 方法来添加元素
list_a.append("倚天屠龙")
print("list_a:", list_a) # list_a: ['雪山飞狐', '笑傲江湖', '倚天屠龙']
# 使用del删除列表元素
del list_a[1]
print("list_a:", list_a) # list_a: ['雪山飞狐', '倚天屠龙']
7、列表是可变序列(要注意其使用特点),看下面的代码
1)列表的元素是可以修改的,修改后,列表变量指向地址不变,只是数据内容变化
# 列表的元素是可以修改的,修改后,列表变量指向地址不变,只是数据内容变化
list1=[1,2.1,'韩顺平教育']
print(f"list:{list1} 地址:{id(list1)}")
list1[2]='python' # 可以修改
print(f"list:{list1} 地址:{id(list1)}")
2)扩展一下,列表在赋值时的特点,示意图说明
# 扩展一下,列表在赋值时的特点,示意图说明
list1=[1,2.1,'韩顺平教育']
list2=list1
list2[0]=500
print("list2=",list2)
print("list1=",list1)
3)扩展一下,看看列表在函数传参时的特点,示意图
# 扩展一下,看看列表在函数传参时的特点,示意图
def f1(l):
l[0] = 100
print("l的id:", id(l))
list10 = [1, 2.1, 200]
print("list10的id:", id(list10))
f1(list10)
print("list10:", list10)
七、列表常用操作
1、列表常用操作
2)常用操作一览
2、演示列表常用操作
# 列表常用操作
list_a = [100, 200, 300, 400, 600]
print("list_a 列表元素个数:", len(list_a)) # 5
print("list_a 列表最大元素:", max(list_a)) # 600
print("list_a 列表最小元素:", min(list_a)) # 100
# list.append(obj):在列表末尾添加新的对象
# 在列表 list_a列表后,添加900
list_a.append(900)
print("list_a:", list_a) # [100, 200, 300, 400, 600, 900]
# list.count(obj):统计某个元素在列表中出现的次数
print("100出现的次数是:", list_a.count(100)) # 1
# list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list_b = [1, 2, 3]
# 将 list_b追加到 list_a
list_a.extend(list_b)
print("list_a:", list_a) # [100, 200, 300, 400, 600, 900, 1, 2, 3]
# list.index(obj):从列表中找出某个值第一次匹配项的索引位置
# 如果找不到,会报 ValueError
print("300 第1次出现在序列中的索引是:", list_a.index(300)) # 2
# 翻转 list_a,list_a.reverse()
list_a.reverse()
print("list_a:", list_a) # [3, 2, 1, 900, 600, 400, 300, 200, 100]
# 实现把666插入到index为1的位置
list_a.insert(1,666)
print("list_a:", list_a) # [3, 666, 2, 1, 900, 600, 400, 300, 200, 100]
八、列表生成式
1、列表生成式就是"生成列表的公式"
2、基本语法
[列表元素的表达式 for 自定义变量 in 可迭代对象]
实例说明:
[ele * 2 for ele in range(1,5)] --> 得到列表 [2,4,6,8]
[ele + ele for ele in "明天"] --> 得到列表 ["明明","天天"]
3、案例:要求生成一个列表,内容为[1,4,9,16,25,36,49,64,81,100]
# 列表生成式
list1=[ele*ele for ele in range(1,11)]
print("list1:", list1) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
九、练习
循环从键盘输入5个成绩,保存到列表,并输出
# 循环从键盘输入5个成绩,保存到列表,并输出
"""
思路分析:
1、定义一个空列表,保持成绩 scores=[]
2、循环操作5次,接收用户的输入,每接收一个数据就添加到列表scores
3、输出成绩即可
"""
# 定义一个空列表,保持成绩 scores=[]
scores=[]
# 循环输入成绩
for i in range(5):
score = float(input("请输入成绩:"))
scores.append(score)
# 输出成绩情况
print("成绩情况是:", scores)