【问题标题】:Why does Python add tuples as vectors inside of a list comprehension but concatenates them with the '+' operator?为什么 Python 在列表推导中添加元组作为向量,但使用“+”运算符连接它们?
【发布时间】:2017-03-19 21:35:52
【问题描述】:

考虑以下代码:

def vector_add(v, w):
    """adds corresponding elements"""
    return [v_i + w_i
            for v_i, w_i in zip(v, w)]

def main():
    pair_1 = (1, 2)
    pair_2 = (2, 3)

    sum = pair_1 + pair_2
    print(sum)

    print vector_add(pair_1, pair_2)

if __name__ == "__main__":
    main()

它打印以下内容:

(1, 2, 2, 3)
[3, 5]

为什么+ 运算符执行连接,而列表推导添加了像向量这样的元组?

【问题讨论】:

    标签: python python-2.7 vector tuples list-comprehension


    【解决方案1】:

    您在列表推导中添加的不是元组,而是整数。

    zip 返回一个由两个整数组成的元组,它们被解包v_iw_i。因此,+ 运算符作用于数字类型而不是元组。

    如果您使用 for 循环并打印值,这会更明显:

    for v_i, w_i in zip(v, w):
        print v_i, w_i
    # 1 2
    # 2 3
    

    在另一种情况下,您有一个普通的旧元组连接。显然,这并不奇怪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 2020-01-18
      • 2018-01-16
      • 2016-02-20
      • 2018-10-13
      • 1970-01-01
      相关资源
      最近更新 更多