试想,如果一个可迭代对象有N多个元素,要将这些元素逐一分解,会得到一大堆零散的变量。而我们的需求并不需要这么多。此时,python的*表达式就派上用场了
假设以下是黄老邪,黄蓉,柯镇恶,沙通天,丘处机,郭靖,杨康,欧阳克的战斗力。除去第一名和最后一名,求其他人的平均战斗力是多少?
fight_num = [95, 70, 62, 50, 75, 85, 75, 80]
# 对数据进行排序
first, *middle, last = sorted(fight_num, reverse=True)
print(first)
# 95
print(middle)
# [85, 80, 75, 75, 70, 62]
print(last)
# 50
avg = sum(middle) / float(len(middle))
print(avg)
# 74.5
*式的语法在迭代一个变长的元组序列时尤其有用
records = [
('guojing', '降龙十八掌', '双手互搏'),
('huangrong', '打狗棒法'),
]
def guojing(x, y):
print('郭靖', x, y)
def huangrong(s):
print('黄蓉', s)
for tag, *args in records:
if tag == 'guojing':
guojing(*args)
elif tag == 'huangrong':
huangrong(*args)
# 郭靖 降龙十八掌 双手互搏
# 黄蓉 打狗棒法
guojing = '郭靖,降龙十八掌,九阴真经,双手互搏,蒙古摔跤,射雕,黄蓉'
uname, *kongfu, wife = guojing.split(',')
print(uname, kongfu, wife)
# 郭靖 ['降龙十八掌', '九阴真经', '双手互搏', '蒙古摔跤', '射雕'] 黄蓉
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有