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

试想,如果一个可迭代对象有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 条评论
登录 后参与评论

相关文章

来自专栏码匠的流水账

Java10的新特性

上面列出的是大方面的特性,除此之外还有一些api的更新及废弃,主要见What’s New in JDK 10 - New Features and Enhanc...

7700
来自专栏草根专栏

Typescript 查缺补漏

Types Casting: let input = xxx as HTMLInputElement; let input = <HTMLElement>xxx...

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

洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom

ng the other ends of her ropes (if she has any), along with the cows holding the...

36050
来自专栏菩提树下的杨过

恶心的0.5四舍五入问题

四舍五入是财务类应用中常见的需求,按中国人的财务习惯,遇到0.5统一向上进位,但是c#与java中默认的却不是这样。 见c#代码: 1 stat...

231100
来自专栏LhWorld哥陪你聊算法

Hadoop源码篇--Reduce篇

Reduce文件会从Mapper任务中拉取很多小文件,小文件内部有序,但是整体是没序的,Reduce会合并小文件,然后套个归并算法,变成一个整体有序的文件。

29510
来自专栏草根专栏

用C# (.NET Core) 实现迭代器设计模式

本文的概念来自深入浅出设计模式一书 项目需求 有两个饭店合并了, 它们各自有自己的菜单. 饭店合并之后要保留这两份菜单. 这两个菜单是这样的: ? 菜单项Men...

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

BZOJ3277: 串(广义后缀自动机)

字符串是oi界常考的问题。现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中

15120
来自专栏aCloudDeveloper

LeetCode: 150_Evaluate Reverse Polish Notation | 分析逆波兰式 | Medium

题目: Evaluate Reverse Polish Notation Evaluatethe value of an arithmetic expressi...

21470
来自专栏Hongten

原来还有这样的记词方法_Java版记不规则动词_博主推荐

昨天在看一本英语书的不规则动词的时候,突然产生的灵感:就是想把这样记单词简单方式,用程序代码实现,然后,使用户可以与之进行交互

10120
来自专栏swag code

练习-Map集合的操作

Teacher对象的值: “Tom”,”Java”, “John”,”Oracle”, “Susan”,”Oracle”, “Jerry”,”JDBC”...

11830

扫码关注云+社区

领取腾讯云代金券