zoukankan      html  css  js  c++  java
  • 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'
    这里的’_’就是被舍弃的变量。
    整个来看,这篇讲述的技巧主要是比较方便的让用户快速取到想要的值,并且存储在新变量中。对于这些类迭代器的数据变量而言,一般大家都喜欢用下标来取对应元素,不过总是带着下标做操作,可能并不方便,因此适时的选用变量获取,有时候会容易一些。

  • 相关阅读:
    一些零碎小知识点积累随笔
    STM32学习笔记——新建工程模板步骤(向原子哥学习)
    记一次电信反射xss的挖掘与利用
    mysql字符串操作相关函数用法总结
    mysql学习笔记
    sigmoid function的直观解释
    多变量线性回归时使用梯度下降(Gradient Descent)求最小值的注意事项
    SAE中Python无法创建多线程的解决方案
    BCNF/3NF 数据库设计范式简介
    web.py下获取get参数
  • 原文地址:https://www.cnblogs.com/valorchang/p/11289131.html
Copyright © 2011-2022 走看看