列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开
里面的元素是数据就行,任何python支持的类型的数据都可以作为列表元素,同一个列表的元素的类型可以不同
列表是可变的,元素的个数,值,顺序可变
列表是有序的,每个元素有固定位置信息–下标,从0开始
赋值语句没有结果,不能作为列表的元素
查
语法:列表[下标]
下标又叫索引,代表元素在列表里的位置信息
下标值范围有两种:
a.元素从左往右对应的下标是从0开始依次增加
b.元素从右往左对应的下标是从-1开始依次减少
c.超过索引:list index out of range
heroes=['鲁班', '后裔', '马可波罗', '虞姬', '孙尚香']
print(heroes[-2]) # 虞姬
print(heroes[0]) # 鲁班
print(heroes[2])
print(heroes[-3])
for x in heroes:
print('x',x)
方法一:直接获取元素
for 变量 in 列表:
循环体
方法二:通过下标遍历元素
len(列表)-获取元素个数(长度)
for 变量 in range(len(列表)):
循环体
变量范围:0- len(列表)-1,循环 len(列表)次
# 练习:定义一个列表保存一个班所有学生的分数
# 0. 遍历打印每个学生的分数
# 1. 求所有学生的总分
# 2. 统计不及格学生的个数
sum=0
count=0
scores = [45, 67, 89, 90, 77, 23, 50]
for x in range(len(scores)):
print(scores[x])
sum += scores[x]
if scores[x] < 60:
count+=1
print(sum, count)
# 练习:打印位置在偶数位上的所有元素
for x in range(0,len(scores),2):
print(scores[x])
heroes=['鲁班', '后裔', '马可波罗', '虞姬', '孙尚香']
print(heroes[1:4:1]) # 从后裔(1)取到虞姬(3)
print(heroes[-4:-1]) # 从后裔(-4)取到虞姬(-2)
print(heroes[0:-1:1]) # 从鲁班7号(0)取到虞姬(-2)
print(heroes[4:1:1]) # 结果为[]
print(heroes[1:4:-1]) # 结果为[]
print(heroes[-4:-0:-2]) # [’孙尚香‘,’马可波罗‘]
heroes = ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香', '狄仁杰', '百里守约']
print(heroes[0:-3]) # ['鲁班7号', '后裔', '马可波罗', '虞姬']
print(heroes[:3]) # ['鲁班7号', '后裔', '马可波罗']
print(heroes[:3:-1]) # ['百里守约', '狄仁杰', '孙尚香']
print(heroes[:-5:-2]) # ['百里守约', '孙尚香']
print(heroes[:4:3]) # ['鲁班7号', '虞姬']
print(heroes[-3:]) # ['百里守约', '狄仁杰']
print(heroes[:-3]) # ['鲁班7号', '后裔', '马可波罗', '虞姬']
print(heroes[:-3:-1])
print(heroes[2::2]) # ['马可波罗', '孙尚香', '百里守约']
print(heroes[-3::-1]) # ['孙尚香', '虞姬', '马可波罗', '后裔', '鲁班7号']
print(heroes[::2])
print(heroes[:]) # 全取完 应用:复制原列表(copy)
print(heroes[::-1]) # 原列表逆序
movies = ['看不见的客人', '肖申克的救赎', '唐人街探案', '小森林', '忠犬八公', '触不可及', '恐怖游轮']
movies.insert(1,'星际穿越')
movies.insert(0,'忍者神龟')
movies.insert(-2,'变形金刚')
print(movies)
#练习:输入一个学生的成绩,将输入的成绩插入到列表scores,并且保证插入后不影响从大到小的规律
scores = [100, 97, 95, 87, 82, 82, 80, 76, 72, 65, 60, 57, 53, 40]
grade = eval(input('请输入一个数'))
for x in range(len(scores)):
if grade > scores[x]:
scores.insert(x, grade)
break
else:
scores.append(grade)
print(scores)
name = '小明'
del name
nums = [10, 1, 2, 32]
del nums [-1]
del nums
tvs=['后翼弃兵','武林外传','谜之屋','风中的女王','权力的游戏','谜之屋']
tvs.remove('谜之屋') #['女王的棋局', '武林外传', '风中的女王', '权力的游戏', '谜之屋']
print(tvs)
列表.pop(下标) -取出列表中的元素可以用
del_item=tvs.pop()
print(del_item)
subjects = ['高数', '大物', 'c语言', '毛概']
subjects[0] = '英语'
print(subjects)
# 练习 :已经列表scores,将列表中低于60分的成绩全部修改成60分
scores = [89, 9, 78, 23, 76, 99, 56, 66]
for x in range(len(scores)):
if scores[x]<60:
scores[x]=60
print(scores)
tvs=['后翼弃兵','武林外传','谜之屋','风中的女王','权力的游戏','谜之屋']
print('甄嬛传' not in tvs)
nums = [1,2,3,4]
print(1 in nums)
print([1,2] in nums) # false
a=[0]*10 # 重复运算
b='hello'*3
print(b)
import random
fs=[0]*6
for _ in range(6000):
face = random.randint(1,6)
fs[face-1]+=1
for i in range(1,7):
print(f'{i}点出现了{fs[i-1]}次')