前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从任意长度的可迭代对象中分解元素

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

作者头像
章鱼喵
发布2018-06-27 15:19:52
6230
发布2018-06-27 15:19:52
举报
文章被收录于专栏:codingcoding

试想,如果一个可迭代对象有N多个元素,要将这些元素逐一分解,会得到一大堆零散的变量。而我们的需求并不需要这么多。此时,python的*表达式就派上用场了

分解列表

假设以下是黄老邪,黄蓉,柯镇恶,沙通天,丘处机,郭靖,杨康,欧阳克的战斗力。除去第一名和最后一名,求其他人的平均战斗力是多少?

代码语言:javascript
复制
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

迭代变长的元组

*式的语法在迭代一个变长的元组序列时尤其有用

代码语言:javascript
复制
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)

# 郭靖 降龙十八掌 双手互搏
# 黄蓉 打狗棒法

拆分字符串

代码语言:javascript
复制
guojing = '郭靖,降龙十八掌,九阴真经,双手互搏,蒙古摔跤,射雕,黄蓉'

uname, *kongfu, wife = guojing.split(',') 
print(uname, kongfu, wife)
# 郭靖 ['降龙十八掌', '九阴真经', '双手互搏', '蒙古摔跤', '射雕'] 黄蓉

源码下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分解列表
  • 迭代变长的元组
  • 拆分字符串
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档