列表基础

一、列表的元素的遍历和切片

1、容器型数据类型:可以同时保存多个数据的类型有:列表,元组,字典,集合,字符串,迭代器,生成器
(容器中的每个独立的数据叫元素)
2、列表
1.什么是列表:
列表是容器型数据类型,将[ ]作为容器的标志,里面的多个数据(元素)用逗号隔开,比如[10, 20, 30]
列表时可变的(列表中元素的个数和值可变),列表是有序的

列表中的元素:可以是任何类型的数据,不同元素的类型可以不一样

scores = [56, 87, 98, 67, 90]
print(scores)

list1 = [98, 12.89, True, "abc", [1, 2, 3]]
print(list1)

2.获取列表元素
1)获取单个元素
语法:
列表[下标]

说明:
列表 - 任何结果是列表的表达式:独立的列表数据,保存列表的变量,返回值是列表的函数调用表达式,结果是列表的运算表达式
[ ] - 固定写法
下标 - 想要获取的元素对应的下标志

补充:什么是下标
下标又叫索引,是用来表示有序序列中元素的位置(顺序)
列表中的每个元素都有一个唯一并且固定的下标,用来表示这个元素在列表中的位置,下标志的范围从0开始依次增加,其中0表示第一个元素
列表中的每个元素有两种下标值,一种是正的下标值(从0开始),另一种是负的下标值(从-1开始,依次减少,-1表示最后一个元素)

注意:下标不能越界

names = ["刘备", "关羽", "张飞"]
print(names[1], names[-2])      # 关羽 关羽

2)获取部分元素 - 切片
语法:
列表[开始下标:结束下标:步长] - 从开始下标开始,每次下标值增加步长,取到结束下标前位置

说明:
列表 - 任何结果是列表的表达式:独立的列表数据,保存列表的变量,返回值是列表的函数调用表达式,结果是列表的运算表达式
[ ] - 固定写法
开始下标,结束下标 - 下标值,整数
步长 - 整数

如果步长是正,表示获取元素的时候是从前往后取,保证开始下标对应的元素要在结束下标对应的元素前面,否则切片的结果是[ ]

如果步长是负,表示获取元素的时候是从后往前取,保证开始下标对应的元素要在结束下标对应的元素后面,否则切片的结果是[ ]

注意:切片的时候下标可以越界

names = ["瑞文", "亚索", "剑姬", "盲僧", "狗头"]
print(names[1:3:1])     # ['亚索', '剑姬']
print(names[-4:3:1])    # ['亚索', '剑姬']
print(names[1:-1:2])    # ['亚索', '盲僧']
print(names[-1:1:1])    # []
print(names[-1:1:-1])   # ['狗 头', '盲僧', '剑姬']
print(names[-1:0:-2])   # ['狗头', '剑姬']
print(names[2:5:1])     # ['剑姬', '盲僧', '狗头']

3)切片语法的省略写法
a.省略步长
列表[开始下标:结束下标] —> 列表[开始下标:结束下标:1]

print(names[1:4])   # ['亚索', '剑姬', '盲僧']
print(names[-2:4])  # ['盲僧']

b.省略开始下标
列表[:结束下标:步长] / 列表[:结束下标]

步长为正,表示从第一个元素开始往后取
步长为负,表示从最后一个元素开始往前取

movies = ["肖生克的救赎", "乡村老尸", "霸王别姬", "绿里奇迹", "辛德勒的名单", "盗梦空间"]
print(movies[:-1])      # ['肖生克的救赎', '乡村老尸', '霸王别姬', '绿里奇迹', '辛德勒的名单']
print(movies[:2:-1])    # ['盗梦空间', '辛德勒的名单', '绿里奇迹']
print(movies[:0:-2])    # ['盗梦空间', '绿里奇迹', '乡村老尸']

c.省略结束下标
列表[开始下表::步长] / 列表[开始下表:]

步长为正,从前往后取到最后一个元素为止
步长为负,从后往前取到最后一个元素为止

print(movies[-3:])      # ['绿里奇迹', '辛德勒的名单', '盗梦空间']
print(movies[-1::2])    # ['盗梦空间']

同时省略开始下标和结束下标
列表[::步长] / 列表[:]

步长为正,从第一个元素取到最后一个元素
步长为负,从最后一个元素取到第一个元素

print(movies[::-1])     # ['盗梦空间', '辛德勒的名单', '绿里奇迹', '霸王别姬', '乡村老尸', '肖生克的救赎']
print(movies[:])        # ['肖生克的救赎', '乡村老尸', '霸王别姬', '绿里奇迹', '辛德勒的名单', '盗梦空间']
print(movies[::2])      # ['肖生克的救赎', '霸王别姬', '辛德勒的名单']

4)遍历列表 - 将列表中的元素一个一个的取出来
方法一:直接法

for 变量 in 列表:
    循环体

方法二:通过下标间接获取

for 下标 in 下标对应的数字序列:
    列表[下标]
    循环体
movies = ["肖生克的救赎", "乡村老尸", "霸王别姬", "绿里奇迹", "辛德勒的名单", "盗梦空间"]
for m in movies:
    print(m)

len(列表) - 返回列表中元素的个数

for index in range(len(movies)):
    print(movies[index])

练习1:用一个列表保存一个班所有学生的分数,统计不及格学生的人数

count = 0
scores = [97, 56, 78, 66, 73, 43, 59, 76, 21]
for x in scores:
    if x < 60:
        count += 1
print("不及格人数:", count)

练习2:用一个列表保存一个班所有学生的分数,计算班级学生的平均分

count = 0
scores = [97, 56, 78, 66, 73, 43, 59, 76, 21]
for x in scores:
    count += x
mean = count / len(scores)
print("平均分:", mean)

二、列表元素的增删改

1.增 - 添加元素
1)append - 追加
列表.append(元素) - 在指定列表的的最后添加指定的元素

list1 = [10, 20, 30]
print(list1)
list1.append(100)
print(list1)

2)insert - 插入
列表.insert(下标, 元素) - 在指定列表指定下标对应的元素前插入指定的位置

list1 = [10, 20, 30]
list1.insert(1, 100)
print(list1)

练习:不断输入学生的成绩,并且把所有输入的成绩保存在一个列表中,输入-1表示结束

list1 = []
while True:
   score = float(input("请输入成绩"))
   if score == -1:
       break
   list1.append(score)
print(list1)

2.删 - 删除元素
1)del语句
del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)

teleplays = ["甄嬛传", "大明王朝", "琅琊榜", "庆余年", "还珠格格", "请回答1988"]
del teleplays[2]
print(teleplays)
del teleplays[-4]
print(teleplays)

2)remove
列表.remove(元素) - 删除列表中指定的元素(如果指定的元素不存在,程序报错,如果指定的元素存在多个,只删最前面的那一个)

teleplays = ["甄嬛传", "大明王朝", "琅琊榜", "庆余年", "还珠格格", "请回答1988", "甄嬛传"]
teleplays.remove("甄嬛传")
print(teleplays)

3)pop
列表.pop() - 取出列表中最后一个元素,并且返回被取出的元素
列表.pop(下标) - 取出列表中指定下标对应的元素,并且返回被取出的元素

teleplays = ["甄嬛传", "大明王朝", "琅琊榜", "庆余年", "还珠格格", "请回答1988", "甄嬛传"]
t = teleplays.pop(1)
print(teleplays)
print(t)
t = teleplays.pop()
print(teleplays)
print(t)

3.改 - 修改元素的值
a.列表[下标] = 新元素 - 将列表中指定下标对应的元素修改成新的元素(下标不能越界)

anime = ["火影忍者", "海贼王", "死神", "天线宝宝", "死亡笔记"]
anime[-2] = "海绵宝宝"
print(anime)

练习:[89, 45, -55, 30, -78, 90, -34, 87, 10, 59, 100, -19],将列表中所有的负数都改成0

list2 = [89, 45, -55, 30, -78, 90, -34, 87, 10, 59, 100, -19]
for index in range(len(list2)):
    if list2[index] < 0:
        list2[index] = 0
print(list2)
  • b.列表1[开始下标:结束下标] = 列表2 - 将列表1中开始下标到结束下标中的所有元素替换成列表2中所有元素
nums = [10, 20, 30, 40, 50]
nums[1:3] = [100, 200, 300]
print(nums)

4.in 和 not in
元素 in 列表 - 判断指定元素是否在指定列表中
元素 in not 列表 - 判断指定元素是否不在指定列表中

print(10 in nums)   # True
print(20 not in nums)   # True
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值