zoukankan      html  css  js  c++  java
  • Python基础09 赋值魔法

    Python的赋值语句有一些使用窍门。

    一、序列解包

    序列解包:将一个序列解包,并将得到的值存储到一系列变量中。

    >>> x, y, z = 1, 2, 3
    >>> print(x, y, z)
    1 2 3
    >>> values = 1, 2, 3
    >>> values
    (1, 2, 3)
    >>> x, y, z = values
    >>> print(x, y, z)
    1 2 3

    使用这种方式还可交换多个变量的值。

    >>> x, y = y, x
    >>> print(x, y, z)
    2 1 3

    要解包的序列包含的元素个数必须与目标个数相同,否则将引发异常。

    >>> x, y, z = 1, 2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: not enough values to unpack (expected 3, got 2)
    >>> x, y, z = 1, 2, 3, 4
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: too many values to unpack (expected 3)

    可使用星号运算符(*)来收集多余的值,这样无须确保值和变量的个数相同。

    >>> x, y, *z = 1, 2, 3, 4
    >>> z
    [3, 4]

    还可将带星号的变量放在其他位置。

    >>> x, *y, z = 1, 2, 3, 4
    >>> y
    [2, 3]

    二、链式赋值

    链式赋值用于将多个变量关联到同一个值。

      x = y = somefunction()

    上述代码与下面的代码等价:

      y = somefunction()

      x = y

    三、增强赋值

    x = x + 1 可以写成 x += 1,这称为增强赋值。

    增强赋值适用于所有标准运算符,如*、/、%等。

    >>> x = 2
    >>> x += 1 >>> x *= 2 >>> x /= 2 >>> x %= 2

    增强赋值也可用于其他数据类型。

    >>> x = 'py'
    >>> x += 'thon'
    >>> x *= 2
  • 相关阅读:
    巴洛克式和哥特式的区别
    推荐阅读书籍,是时候再行动起来了。
    AtCoder ABC 159F Knapsack for All Segments
    AtCoder ABC 159E Dividing Chocolate
    AtCoder ABC 158F Removing Robots
    AtCoder ABC 158E Divisible Substring
    AtCoder ABC 157F Yakiniku Optimization Problem
    AtCoder ABC 157E Simple String Queries
    AtCoder ABC 157D Friend Suggestions
    AtCoder ABC 156F Modularness
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/12458183.html
Copyright © 2011-2022 走看看