从任意长度的可迭代对象中分解元素

试想,如果一个可迭代对象有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)
# 郭靖 ['降龙十八掌', '九阴真经', '双手互搏', '蒙古摔跤', '射雕'] 黄蓉

源码下载

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏kalifaの日々

POJ3684(弹性碰撞)各种wrong answer踩坑

我踩过的坑全部都写在注释里面了,供大家参考。 #include <stdio.h> #include <algorithm> #include <math.h>...

2695
来自专栏海天一树

NOIP 2011初赛普及组C/C++答案详解

3 C 8G = 8 * 1024 M 8 * 1024 / 2 = 4096张 注意,题目说的是“大约”,不要求精确。

932
来自专栏章鱼的慢慢技术路

牛客网2018年全国多校算法寒假训练营练习比赛(第二场)

2404
来自专栏WOLFRAM

九宫格数独游戏

1558
来自专栏数据结构与算法

Day2下午解题报告

预计分数:100+100+30=230 实际分数:100+100+30=230 人品爆发&&智商爆发&&手感爆发 T3数据好水,,要是把数组开大一点的话还能多得...

2544
来自专栏wym

ACM / ICPC 2018亚洲区预选赛北京赛站网络赛 3题签到

选择一个城市开始,必须按照顺时针遍历完所有城市,第一次到这个城市获得ai经费,到下一个城市的代价是bi

853
来自专栏大数据文摘

动图,用Python追踪NBA球员的运动轨迹

2454
来自专栏落影的专栏

程序员进阶之算法练习(三十一)

BAT常见的算法面试题解析: 程序员算法基础——动态规划 程序员算法基础——贪心算法 工作闲暇也会有在线分享,算法基础教程----腾讯课堂地址。

1293
来自专栏ACM算法日常

唯快不破的01序列——位运算初识

众所周知,计算机的运算使用的就是二进制,它会把十进制的数转化为二进制,然后进行二进制运算,最后再转回十进制展现给我们。而位运算指的是:由于数字在计算机里...

523
来自专栏专知

关关的刷题日记93 – Leetcode 11. Container With Most Water

关关的刷题日记93 – Leetcode 11. Container With Most Water 题目 Given n non-negative integ...

3477

扫码关注云+社区