day6-列表

文章介绍了Python中列表的基础知识,包括如何定义和使用列表来存储成绩数据。对比了不使用列表和使用列表的方法,强调了列表在处理多个数据时的优势。接着详细阐述了列表的查询操作,如单个元素获取和切片操作,以及如何通过索引和步长来灵活获取列表中的部分元素。最后,文章提到了遍历列表的三种方法,用于访问列表中的所有元素,并给出了相关示例。
摘要由CSDN通过智能技术生成

day6-列表

1.列表基础

需求:定义变量保存的6个学生成绩

方法一  -  不使用列表
s1 = 90
s2 = 87
s3 = 92
s4 = 67
s5 = 55
s6 = 69
s7 = 71

print((s1 + s2 + s3 + s4 + s5 + s6 + s7) / 7)

max1 = s1
if s2 > max1:
    max = s2
if s2 > max1:
    max = s3
if s2 > max1:
    max = s4
if s2 > max1:
    max = s5
if s2 > max1:
    max = s6
if s2 > max1:
    max = s7
print(max1)
方法2  -  使用列表
scores = [90, 87, 92, 67, 55, 69, 87, 99]
print(sum(scores) / len(scores))
print(max(scores))

​ 使用推荐:如果要同时处理多个数据,可以考虑列表

  1. 认识列表(list)

    1. 列表是容器型数据类型(序列)﹔将[]作为容器的标志,里面多个数据用逗号隔开︰【数据1,数据2,数据3,…]

    2. 列表是可变的(可变指的是列表中元素的个数和元素的值可变 - 列表支持增删改)
      列表是有序的(元素有顺序对应的位置信息;元素的顺序影响结果 - 列表支持索引操作)

    3. 列表对元素的要求:没有要求,任何类型的数据都可以作为列表的元素

​ 注: 元素 - 容器中没每一个独立的数据,就是这个容器的元素

1) 空列表
   list1 = []
   print(list1)

2) 列表是有序的
   print([10, 20, 30] == [30, 10, 20])     #False
   print({10,20,30} == {30,10,20})         #True(集合是无序的,顺序不影响结果)

3) 	a. 列表元素可以是任何类型的数据
   	list2 = [10, 20, 40]
   	names = ['小明','小花','张三']

	b. 一个列表的元素可以是多个不同类型的数据
	list3 = [10, 1.23, True, None, '小花']

	c. 列表中的元素也可以是列表
	list4 = [10, 20, [30, 40]]

2.列表查操作 - 获取列表中的值

1.查单个 - 获取一个元素

​ 1)语法:

​ 列表[索引]

​ 2)说明:

​ 列表 - 需要获取元素的列表对象(可以是保存一个列表的变量,也可以是具体的列数据)

​ [] - 固定写法

​ 索引 - 又叫下标;指的是元素在列表中的位置

​ 列表一旦确定,列表中的每个元素对应的索引就确定:

​ a.元素从前往后索引从0开始不断增加

​ b.元素从后往前从-1开始不断减少

nums = [10,20,30,40]
print(nums[1])
print([10, 20, 30, 40][1])
print(nums[-1])
print(nums[3])

# print(nums[4])        # 报错!索引不能越界
# print(nums[-6])       # 报错!索引不能越界			

2.切片 - 同时获取多个元素(列表结果的结果是列表)

  1. 完整语法:

    列表[开始下标:结束下标:步长]

    1. 说明

      列表 - 需要获取元素列表
      [] - 固定写法
      开始下标、结束下标、步长 - 必须是整数
      开始下标 - 决定从哪开始取
      结束下标 - 决定取到哪里结束
      步长 - 决定取的时候怎么取(是一个一个的按顺序取,还是跳着取;是从前往后取还是从后往前取)

  2. 使用切片

    1. 确定切片结果

      1. 先确定结果是否为空,看开始下标对应的位置到结束下标对应的位置的方向和步长的方向是否一致

        一致结果不为空,不一致结果一定为空

      2. 如果结果不为空,再确定切片的有效范围:开始下标对应的元素能取到,结束下标对应元素取不到

      3. 在有效范围内容,按照步长的反向和绝对值获取元素。
        方向∶步长为正,从开始下标到结束下标从前往后取;步长为负就从后往前取
        绝对值∶绝对值为1,就1个1个的取;绝对值为2,取1个跳1个再取1个;绝对值为3,取1个跳2个再取1个;…

    2. 怎么写切片代码获取指定元素

      确定开始下标:需要的结果中第一个数据在列表的下标
      确定结束下标:结束下标是结果中最后一项的后一个数据或者前一个数据的下标(看方向)
      确定步长∶正负看趋势(从前往后取还是从后往前取);再看绝对值(看取的时候是一个一个的取的,还是跳着取的)

movies = ['肖生克的救赎', '霸王别姬', '阿甘正传', '钢铁侠','蜘蛛侠','蝙蝠侠','蚁人','雷神','复仇者联盟']
print(movies[1:3:1])        # ['霸王别姬','阿甘正传']
print(movies[0:-2:2])       # ["肖生克的救赎’,‘阿甘正传',‘蜘蛛侠','蚁人']
print(movies[5:0:2])        # []
print(movies[3:-1:-1])      # []
print(movies[-2:2:-2])      # ['雷神','蝙蝠侠','钢铁侠']
print(movies[6:2:-3])       # [‘蚁人’,'钢铁侠']
print(movies[1:-3:3])       # ['霸王别姬','蜘蛛侠']

print(movies[1:-1:1])       # ['霸王别姬','阿甘正传','钢铁侠','蜘蛛侠','蝙蝠侠','蚁人','雷神']
print(movies[-1:1:-2])      # ['复仇者联盟','蚁人','蜘蛛侠','阿甘正传']
print(movies[-2:5:2])       # []
print(movies[0:-2:4])       # ['肖生克的救赎','蜘蛛侠']
print(movies[5:-1:2])       # ['蝙蝠侠','雷神']
print(movies[6:-6:-1])      # ['蚁人','蝙蝠侠','蜘蛛侠']

movies =['肖生克的救赎','霸王别姬','阿甘正传','钢铁侠','蜘蛛侠','蝙蝠侠','蚁人','雷神','复仇者联盟']
#[‘霸王别姬','阿甘正传','钢铁侠']
print(movies[1:4:1])
#['阿甘正传','蜘蛛侠',‘蚁人']
print(movies[2:7:2])
#['雷神','阿甘正传']
print(movies[-2:1:-5])

# ['肖生克的救赎', '钢铁侠', '蚁人']
print(movies[0:-2:3])
# ['复仇者联盟', '雷神', '蚁人', '蝙蝠侠']
print(movies[-1:-5:-1])
# ['钢铁侠', '霸王别姬']
print(movies[3:0:-2])
# ['雷神', '蝙蝠侠', '钢铁侠']
print(movies[-2:2:-2])
# ['霸王别姬', 蝙蝠侠']
print(movies[1:-3:3])

​ 3.切片省略的写法

​ 完整的切片语法:列表[开始下标:结束下标:步长]

  1. 省略步长 - 相当于步长为1
    列表[开始下标:结束下标]
  2. 省略开始下标 - 获取元素的从头开始取(步长为为正,从第一个元素开始;步长为负,从最后一个元素开始)
    列表[:结束下标:步长]
movies =['肖生克的救赎','霸王别姬','阿甘正传','钢铁侠','蜘蛛侠','蝙蝠侠','蚁人','雷神','复仇者联盟']
print(movies[1:4])      # ['霸王别姬', '阿甘正传', '钢铁侠']
print(movies[-1:1])     # []

print(movies[:-2:2])    # ['肖生克的救赎','阿甘正传','蜘蛛侠','蚁人']
print(movies[:2:-2])    # ['复仇者联盟','蚁人','蜘蛛侠']
print(movies[:4])       # ['肖生克的救赎','霸王别姬','阿甘正传','钢铁侠']

3.遍历 - 一个一个的获取列表中所有的元素

  1. 方法1:

    for 变量 in 列表:
    循环体(变量依次获取到的就是列表中的每个元素)

  2. 方法2:

    for 变量 in range(列表长度):
    循环体(列表[变量])

  3. 方法3:

    for 变量1,变量2 in enumerate():
    循环体(变量1依次获取的是每个元素的下标;变量2依次获取的是每个元素)

scores = [ 90,89,87,81,79,93,67,56,43,99]


# 方法1:
for x in scores:
    print(x)

# 求总分
sum1 = 0
for x in scores:
    sum1 += 1
print(sum1)

# 统计90分以上的学生的人数
count = 0
for x in scores:
    if x > 90:
        count += 1
print('90分以上的学生人数:', count)

list1= [
    [10, 20],
    [100, 200],
    [1, 2]
]
for x in list1:
    print('x:',x[-1])

scores = [ 90,89,87,81,79,93,67,56,43,99]
for x in range(len(scores)):
    print(x,scores[x])

for x, y in enumerate(scores):
    print('x:',x,'y:',y)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值