1.什么是列表(list):
列表是python提供的容器形数据类型。
:
可变的 --- 列表中的每个元素的值可变,列表中元素的顺序可变,列表的长度可变
有序的 --- 每个元素可以通过下标来确定位置
2.列表的字面量:通过[]括起来,里面有多个元素,每个元素用逗号隔开
例如:['qwe',12,True] []
注意:python中列表元素类型可以是任何python支持的数据类型,并且同一个列表中,所有元素的类型可以不一样
scores = [90,80,89,99]
print(scores)
# 所有的数据类型都可以作为列表元素
list1 = [12,'asd',12.3,True,[1,2,3],{'a':2,'b':3},lambda x:x*2]
print(len(list1))
获取列表元素
a.获取单个元素
列表[下标]---- 0 到 长度减一;-1 到负的长度
list1=[10,20,30]
print(list1[0],list1[-1]) # 10 30
获取部分元素: -- 切片结果都是产生一个新列表,取不到的时候是一个空列表
列表[开始下标:结束下标:步长]
列表[::]
moves = ['毒液','功夫熊猫','肖申克的救赎','这个杀手不太冷','拯救大兵瑞恩']
print(moves[1:3],moves[1:5:2],moves[3:-3:-1])
遍历列表:
1.使用for循环直接拿到所有元素
2.通过遍历下标来获取所有元素
注意:1,通过遍历列表去删除某些元素删不完全的时候,就通过切片原列表产生一个新列表,
然后遍历新列表,去删除原来列表的元素
for item in moves:
print(item)
for index in range(len(moves)):
print(moves[index])
num = len(moves)-1 # 倒叙列表
while num >= 0 :
print(moves[num])
num -= 1
# 统计一个班的成绩,存在列表里面,求列表中整个班的成绩
socers=[90,80,70,60,50,60,70,80,88]
sum = 0
for item in socers:
sum += item
print("总成绩是%d,平均值是%d"%(sum,sum/len(socers)))
列表增删该
注意:1,通过遍历列表去删除某些元素删不完全的时候,就通过切片原列表产生一个新列表,
然后遍历新列表,去删除原来列表的元素
1.增--添加列表元素 (不会产生一个新的列表,而是在原来的列表基础上添加)
a. append() ---
方法:
列表.append(元素) ---- 在指定列表最后添加指定元素
b. insert() ----
方法:
列表.insert(下标,元素)---- 在指定的下标前去插入指定元素
animes = ['海贼王','火影','一人之下','秦时明月','画江湖']
animes.append('一拳超人')
print(animes) # ['海贼王', '火影', '一人之下', '秦时明月', '画江湖', '一拳超人']
animes.insert(2,'犬夜叉')
print(animes) #['海贼王', '火影', '犬夜叉', '一人之下', '秦时明月', '画江湖', '一拳超人']
animes.insert(0,'进击的巨人')
print(animes) #['进击的巨人', '海贼王', '火影', '犬夜叉', '一人之下', '秦时明月', '画江湖', '一拳超人']
2.删除元素
a. del --- 注意:关键字用它可以删除任何数据
del 列表[下标] -- 删除指定列表指定下标所对应的元素,下标不能越界!!!
b.remove -- 注意:被删除的元素在列表中必须是存在的
列表.remove(元素) -- 删除指定列表中的指定的第一个元素
c. pop -- 会返回取出来的元素
c.1: 列表.pop() --- 将列表中的最后一个元素从列表中取出
c.2: 列表.pop(下标) -- 将列表中指定的元素从列表中取出
animes = ['进击的巨人', '海贼王','海贼王' ,'火影', '犬夜叉', '一人之下', '秦时明月', '画江湖', '一拳超人']
del animes[-2]
print(animes) # ['进击的巨人', '海贼王', '海贼王', '火影', '犬夜叉', '一人之下', '秦时明月', '一拳超人']
animes.remove('海贼王')
print(animes) # ['进击的巨人', '海贼王', '火影', '犬夜叉', '一人之下', '秦时明月', '一拳超人']
del_item=animes.pop()
print(animes) #['进击的巨人', '海贼王', '火影', '犬夜叉', '一人之下', '秦时明月']
print(del_item) #'一拳超人'
animes.pop(0)
print(animes) #['海贼王', '火影', '犬夜叉', '一人之下', '秦时明月']
用一个列表统计学生的年龄,直到输入end为止,然后删除所有小于18的年龄
stu_message=[]
age = input('输入年龄')
while age !='end':
stu_message.append(int(age))
age = input('输入年龄')
print(stu_message)
tem = stu_message[:]
for item in tem:
if item < 18 :
stu_message.remove(item)
print(stu_message)
通过下标删除
ages=[12,34,56,78,13,14,18,19]
index = 0
new_ages=[]
while index < len(ages):
age = ages[index]
if age < 18 :
del_item=ages.pop(index)
new_ages.append(del_item)
else:
index += 1
print(ages,new_ages)
3.修改元素的值
列表[下标]=新值 -- 修改列表中指定下标对应的值
list1=[1,2,3,4]
list1[0]='帅哥'
print(list1)
一个列表保存的是学生成绩,将列表中成绩小于60分的改成下一个班见,并统计有多少个学生留级。
socers=[55,56,57,58,59,60,61,62,63,64,65,66]
sum=0
for index in range(len(socers)):
if socers[index] < 60 :
socers[index]='留级'
print(socers)
for value in socers:
if value == '留级':
sum += 1
print(sum)
列表相关运算:数学运算:+ *,比较运算
a.加法
列表1+列表2 -- 将两个列表的元素合并在一起产生一个新的列表,
b.乘法
列表1*n --- 将列表中的元素重复n次产生一个新的列表
2.比较运算 --比较大小的时候列表第一个元素类型必须一样
print([1,2,3]+['a','b','c']) #[1, 2, 3, 'a', 'b', 'c']
print([1,2,3]*5) #[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
in 和 not in
a.元素 in 列表 -- 判断元素是否在指定的列表里面
len(列表) -- 统计列表中元素的个数
list(列表) -- 将其他数据转换成列表(只有序列才能转换成列表)
就是将所有的元素转换成列表的元素
注意:不能用python提供的类型名来命名
dict1={'a':1,'b':2,'哈哈':1}
str1='asdad'
print(list(dict1),list(str1))
序列的其他方法--(要求序列中的元素类型必须一致,并且这个类型支持比较和加法运算)
max(序列)---获取序列中值最大的元素
min(序列)---获取序列中值最大的元素
sum(序列)---求序列中元素的和
print(sum(range(1,1001)))#500500
print(max([23,42,43,23,42,34,234,32,4,234,23,4,5,3,45,34,2,341,1,3,12])) #341
print(min([23,42,43,23,42,34,234,32,4,234,23,4,5,3,45,34,2,341,1,3,12])) # 1
print(sum([23,42,43,23,42,34,234,32,4,234,23,4,5,3,45,34,2,341,1,3,12]))#1184
网友评论