day总结-5列表

day总结-5列表

一、认识列表

  1. 什么是列表

列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开:

[‘元素1’,‘元素2’,‘元素3’,‘元素4’,…]

list1 = []  # 空列表
list2 = [10, 10, 20, '张三']
list3 = [10,12.5,'abc',True,[1,2],(10,20)]

list 是可变的(元素的个数,位置,值可变);列表是有序的(元素有固定位置信息----下标)

元素:任何Python支持的类型的数据都可以作为列表,同一个列表的元素的类型可以不同,赋值语句不能作为列表的元素。

二、获取元素

  1. 查 ------ 获取元素 获取单个元素
heroes = ['鲁班七号', '后裔', '虞姬', '孙尚香']
print(heroes[1])
print(heroes[0])
print(heroes[-2])
print(heroes[-1])

语法: 列表[下标] —获取列表中指定下标对应的元素

什么是下标:下标又叫索引,代表元素在序列中的位置信息。

下标值范围有两种:

  • 元素从左往右对应的下标是从0开始依次增加的
  • 元素从右往左对应的下标是从-1开始依次减少。
  1. 遍历

    1. for 变量 in 列表:

      循环体

    for x in heroes:
        print(x)
    
  • 例题:定义一个列表保存一个班所有的学生分数,求所有学生的总分,统计不及格学生的分数。
scores = [45, 67, 89, 90, 77, 23, 50]
sum = 0
count = 0
for x in scores:
    sum += x
    if x >= 60:
        print('及格分数:', x)
    else:
        count += 1
        print('不及格分数:', x)
print('总分:', sum)
print('不及格个数:', count)

​ 2. 通过下标遍历元素

​ len (列表) ------ 获取列表长度(获取列表元素的个数)

​ for 变量 in range(len(列表)):

​ 循环体

list1 = [10, 20, 'abc']
print(len(list1))
scores = [45, 67, 89, 90, 77, 23, 50]
for index in range(len(scores)):
    print(index, scores[index])
  • 例题:打印位置在偶数位上的所有元素
for index in range(0, len(scores), 2):
    print(index, scores[index])
  1. 获取部分元素(列表切片)

​ 列表[开始下标

步长为正:从开始下标到结束下标左闭右开,从前往后取,每次下标增长步数

heroes = ['鲁班七号', '后裔', '虞姬', '马可波罗', '孙尚香']
print(heroes[1:4:1])  # 后裔 虞姬 马可波罗
print(heroes[1:4:2])  # 后裔 虞姬
print(heroes[0:-1:1])  # ['鲁班七号', '后裔', '虞姬', '马可波罗']
print(heroes[1:4:2])   # []

步长为负:从开始下标到结束下标的左闭右开,从后往前取,每次减少步长

print(heroes[-1:0:-2])  # ['孙尚香', '马可波罗']

​ 1. 省略步长

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

heroes = ['鲁班七号', '后裔', '虞姬', '马可波罗', '孙尚香', '狄仁杰', '百里守约']
print(heroes[1:4])
print(heroes[-5:-2])   # ['马克波罗'’虞姬‘’孙尚香‘]
print(heroes[0:-3])   # ['鲁班七号''后裔'’马克波罗‘’虞姬‘]
print(heroes[-1:2])  # []

​ 2.省略开始下标

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

​ 列表[:结束下标]

​ 如果步长为正:开始下标就从第一个元素开始往后取;

​ 如果步长为负:开始下标就从最后一饿元素开始往前取

heroes = ['鲁班七号', '后裔', '虞姬', '马可波罗', '孙尚香', '狄仁杰', '百里守约']
print(heroes[:3])  #['鲁班七号', '后裔', '虞姬']
print(heroes[:3:-1])  #百里守约,狄仁杰,孙尚香
print(heroes[:-3:1])   # [鲁班七号,后裔,马克波罗,虞姬]
print(heroes[:-5:-2])   # [百里守约,孙尚香]
print(heroes[:4:3])    # [鲁班七号,虞姬]

​ 3.省略结束下标

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

​ 列表[ 开始下标:]

​ 步长为正:结束下标省略,从开始下标开始从前往后取到最后一个元素为止,

​ 步长为负:结束下标省略,从开始下标开始从后往前取到最前一个元素为止,

print(heroes[2::2])  # [马克波罗,孙尚香,百里守约]
print(heroes[-3::-1])  #  [孙尚香,虞姬,马克波罗,后裔,鲁班七号]

三、增、删、改

一、增 ----- 往列表中增加元素

  1. 列表 . append (元素) ----- 在指定列表的最后追加一个指定的元素
movies = ['看不见客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
print(movies)
movies.append('触不可及')
print(movies)
  1. 列表 . insert (下标 , 元素) ------- 列表指定下标前面插入指定元素
movies = ['看不见客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
movies.insert(1, '星际穿越')
print(movies)  # ['看不见客人', '星际穿越', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
movies.insert(0, '忍者神龟')
print(movies)
  • 例题:输入一个学生的成绩,将输入的成绩插入到列表中,并且插入成绩后不影响排序。
for index in range(len(scores)):
    if scores[index] <= num:
        scores.insert(index, num)
        break
else:
        scores.append(num)
print(scores)

二、 删 ----- 删除列表中某个元素

  1. 语法: del 列表 [ 下标 ] — 删除列表中指定下标对应的元素(下标不能越界)
TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年']
del TVs[2]
print(TVs)
  1. 列表 . remove(元素) ---- 删除列表中指定的元素,如果指定元素有相同的多个,只删除最前面的一个。
TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年'] #如果指定元素不存在,会报错
TVs.remove('甄嬛传')
print(TVs)
  1. 列表 . pop(下标) — 取出列表中指定下标对应的元素

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

TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年', '白夜追凶']
del_item = TVs.pop()  # 取出的元素没有消失,可以继续使用
print(TVs, del_item)

三、改和 in 操作

  1. 改 – 修改元素的值

    语法:列表[下标] = 值 – 将列表中指定下标对应的元素修改指定的值

subject = ['高数', '大物', 'C语言', '毛概']
bject[0] = '英语'
print(subject)
  • 例题:已知列表scores,将列表中的低于60的成绩全部修改成60分
scores = [89, 9, 78, 23, 76, 99, 56, 66]
for index in range(len(scores)):
    if scores[index] < 60:
        scores[index] = 60
print(scores)
  1. in 和 not in

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

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

    TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年', '白夜追凶']
    print('甄嬛传'in TVs)   # True
    nums = [1, 2, 3, 4]
    print(1 in nums)  #  True
    print([1, 2] in nums) # False
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值