day05列表笔记

一 、列表

列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开
里面的元素是数据就行,任何python支持的类型的数据都可以作为列表元素,同一个列表的元素的类型可以不同
列表是可变的,元素的个数,值,顺序可变
列表是有序的,每个元素有固定位置信息–下标,从0开始
赋值语句没有结果,不能作为列表的元素

1. 获取单个元素

语法:列表[下标]
下标又叫索引,代表元素在列表里的位置信息
下标值范围有两种:
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)

2. 遍历

方法一:直接获取元素
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])
3. 获取部分元素(列表切片)返回一个小列表
  • 列表[开始下标:结束下标:步长] 左闭右开的区间,结束下标取不到
    步长决定取的方向
    步长为正:[开始下标,结束下标),从前往后,每次下标增加步长
    步长为负:[开始下标,结束下标),从后往前,每次下标增加步长
 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])  # [’孙尚香‘,’马可波罗‘]
  • 省略步长
    列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]
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])  # 原列表逆序

二、增 - 往列表中添加元素

1. 列表.append(元素) -在指定列表的最后追加一个指定的元素
2.列表.insert(下标,元素) -在列表指定下标 前 插入指定元素
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)

三、删除列表中的某个元素

1.语法:del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)
name = '小明'
del name
nums = [10, 1, 2, 32]
del nums [-1]
del nums
2. 列表.remove(元素) -删除指定元素 若指定元素有多个,只删最前面那一个 若所删除的元素没在列表,则报错 x not in list
tvs=['后翼弃兵','武林外传','谜之屋','风中的女王','权力的游戏','谜之屋']
tvs.remove('谜之屋')  #['女王的棋局', '武林外传', '风中的女王', '权力的游戏', '谜之屋']
print(tvs)
3. 列表.pop() -取出列表中最后一个元素 列表里什么都不加

列表.pop(下标) -取出列表中的元素可以用

del_item=tvs.pop()
print(del_item)

四、改 -修改元素的值

1. 语法:列表[下标] = 值 -将列表中指定下标对应的元素修改成指定的值
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)

五、in 和 not in

1.值 in 列表 --判断列表中是否存在指定值对应的元素
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]}次')

你可能感兴趣的:(python)