zoukankan      html  css  js  c++  java
  • Chapter One:数据结构和算法-解压序列赋值给多个变量

    一、问题:

    现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值
    给 N 个变量?

    二、解决方案:

    代码示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    >>> p = (45)
    >>> x, y = p
    >>> x
    4
    >>> y
    5
    >>>
    >>> data = 'ACME'5091.1, (20121221) ]
    >>> name, shares, price, date = data
    >>> name
    'ACME'
    >>> date
    (20121221)
    >>> name, shares, price, (year, mon, day) = data
    6
    《Python Cookbook》第三版, Release 2.0.0
    >>> name
    'ACME'
    >>> year
    2012
    >>> mon
    12
    >>> day
    21
    >>>

    如果变量个数和序列元素的个数不匹配,会产生一个异常。
    代码示例:

    1
    2
    3
    4
    5
    6
    >>> p = (45)
    >>> x, y, z = p
    Traceback (most recent call last):
    File "<stdin>", line 1in <module>
    ValueError: need more than 2 values to unpack
    >>>

    三、总结

    实际上,这种解压赋值可以用在任何可迭代对象上面:

    1. 列表

    2. 元组

    3. 字符串

    4. 文件对象

    5. 迭代器

    6. 生成器

    代码示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> s = 'Hello'
    >>> a, b, c, d, e = s
    >>> a
    'H'
    >>> b
    'e'
    >>> e
    'o'
    >>>

    有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况 Python 并没有提
    供特殊的语法。

    但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。
    代码示例:

    1
    2
    3
    4
    5
    6
    7
    >>> data = 'ACME'5091.1, (20121221) ]
    >>> _, shares, price, _ = data
    >>> shares
    50
    >>> price
    91.1
    >>>

    你必须保证你选用的那些占位变量名在其他地方没被使用到。

  • 相关阅读:
    二元关系最小割
    DG观察日志传输
    [WC2007]剪刀石头布——费用流
    备库报 ORA-00313、ORA-00312、ORA-27037
    「清华集训 2017」无限之环
    The listener supports no services
    [SDOI2010]星际竞速——费用流
    ORA-16055: FAL request rejected
    [总结]网络流
    ORA-16047: DGID mismatch between destination setting and standby
  • 原文地址:https://www.cnblogs.com/luoahong/p/9680847.html
Copyright © 2011-2022 走看看