• Python实用黑科技——解包元素(1)


    需求:
    很多时候手上已经有了一个具有n个元素的列表或者元组,你打算把这些元素单独取出来(解包)放入n个变量组成的集合(这里的集合和Python自己的set不同)中。

    方法:
    显然,最好的办法就是直接用赋值语句(=)来做这件事,唯一需要注意的就是,新变量的个数一定要和原列表、元组里面的元素个数相同:

    In [1]: p = (4, 6, 7)
    In [2]: x, y, z = p
    In [3]: x
    Out[3]: 4
    In [4]: y
    Out[4]: 6
    In [5]: z
    Out[5]: 7

    In [7]: data = ['Jason', 2010, 59, ('SE', 'Web', 'Java')]
    In [8]: name, graduate_year, weight, (job, content, language) = data
    In [9]: name
    Out[9]: 'Jason'
    In [10]: job
    Out[10]: 'SE'
    In [11]: language
    Out[11]: 'Java'
    这里需要注意的是,如果个数不匹配,自然会得到一个错误报告:

    In [12]: mine = (2, 3, 4)
    In [13]: x, y = mine
    ---------------------------------------------------------------------------
    ValueError Traceback (most recent call last)
    <ipython-input-13-be106769942b> in <module>()
    ----> 1 x, y = mine
    ValueError: too many values to unpack (expected 2)
    扩展:
    上述解包方法实际上可以应用于所有类迭代器数据变量,除了上述的列表,元组,在字符串,文件,迭代器等上面自然也是可以使用的。例如:

    In [14]: s = 'Jason'
    In [15]: a, b, c, d, e = s
    In [16]: a
    Out[16]: 'J'
    In [17]: c
    Out[17]: 's'
    In [18]: e
    Out[18]: 'n'
    当然,你也可以舍弃一些不想要的元素,在这里,Python并没有特别指明设定一个舍弃变量符号,你可以随意使用自己喜欢的符号,比如:

    In [19]: data = ['qin', 'f', 'Chengdu', '6000']
    In [20]: name, _, _, money = data
    In [21]: name
    Out[21]: 'qin'
    In [22]: money
    Out[22]: '6000'
    5
    6
    这里的’_’就是被舍弃的变量。
    整个来看,这篇讲述的技巧主要是比较方便的让用户快速取到想要的值,并且存储在新变量中。对于这些类迭代器的数据变量而言,一般大家都喜欢用下标来取对应元素,不过总是带着下标做操作,可能并不方便,因此适时的选用变量获取,有时候会容易一些。
    ————————————————

  • 相关阅读:
    Elasticsearch 搜索的评分机制
    Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)
    Elasticsearch 与 Mongodb 数据同步问题
    Hadoop入门进阶课程6--MapReduce应用案例
    Hadoop入门进阶课程5--MapReduce原理及操作
    Hadoop入门进阶课程4--HDFS原理及操作
    Hadoop入门进阶课程3--Hadoop2.X64位环境搭建
    使用命令行备份指定文件夹并保留最新N份
    Hadoop入门进阶课程2--Hadoop2.X 64位编译
    Hadoop入门进阶课程1--Hadoop1.X伪分布式安装
  • 原文地址:https://www.cnblogs.com/valorchang/p/11475708.html
Copyright © 2020-2023  润新知