Python列表嵌套&元组-B07

列表的嵌套

嵌套的列表可以用来表示表格或数学上的矩阵,例如:我们想保存5个学生3门课程的成绩,可以定义一个保存5个元素的列表保存5个学生的信息,而每个列表元素又是3个元素构成的列表,分别代表3门课程的成绩 。

import random
names=['关羽','张飞','赵云','马超','黄忠']
courses=['语文','数学','英语']
# 列表的生成式
scores=[[random.randrange(50,101) for _ in range(3)] for _ in range(5)]
# 利用循环遍历列表
for i,name in enumerate(names):
    for j,course in enumerate(courses):
        # 格式化输出
        print(f'{name}的{course}成绩:{scores[i][j]}')
# 另外,还可以计算学生的平均成绩和每门课程的最高最低分
# 统计每个学生的平均成绩
for i,name in enumerate(names):
    # print(scores[i]) 取到每个同学的三门课程
    print(f'{name}平均成绩:{sum(scores[i])/len(courses):.1f}')
# 统计每门课的最低分和最高分
for j,course in enumerate(courses):
    temp=[scores[i][j] for i in range(len(names))]
    print(f'{course}的最高分:{max(temp)}')
    print(f'{course}的低高分:{min(temp)}')

元组

元组的定义

在Python中,元组也是多个元素按照一定的顺序构成的序列。不同于列表,元组是不可变的容器类型,也就是说,元组类型的变量一旦定义,其中的元素不能再添加或删除,而且元素的值也不能进行修改。定义元组通常使用()字面量语法,也建议大家使用这种方式来创建元组。

fruits1=('apple','banana','orange')
print(type(fruits1))    # <class 'tuple'>
fruits=('apple')       
print(type(fruits))     # <class 'str'>
# 一元组必须有逗号
fruits=('apple',)
print(type(fruits))     # <class 'tuple'>

元组的使用

# 重复运算
print(fruits*3)                   # ('apple', 'apple', 'apple')
# 成员运算          
print('apple' in fruits1)         # True
print('banana' not in fruits1)    # False

# 合并运算
fruits2=('grape','litchi')      
fruits3=fruits1+fruits2          
print(fruits3)                    # ('apple', 'banana', 'orange', 'grape', 'litchi')

# 切片和索引
print(fruits3[4],fruits3[-1])     # litchi litchi
print(fruits3[::-1])              # ('litchi', 'grape', 'orange', 'banana', 'apple')

print(fruits3.index('apple'))     # 0
print(fruits3.count('apple'))     # 1

元组的应用

当我们把多个用逗号分隔的值赋给一个变量时,多个值会打包成一个元组类型;当我们把一个元组赋值给多个变量时,元组会解包成多个值然后分别赋给对应的变量,如下面的代码所示。

# 打包
a = 1, 10, 100
print(type(a), a)    # <class 'tuple'> (1, 10, 100)
# 解包
i, j, k = a
print(i, j, k)       # 1 10 100

有一种解决变量个数少于元素的个数方法,就是使用星号表达式,我们之前讲函数的可变参数时使用过星号表达式。

a, b, *c = 5, 10, 15, 20, 25
print(a)                      # 5
print(b)                      # 10
print(c)                      # [15,20,25]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值