【问题标题】:What's the difference between [a] + [b] and [a].extend([b])? [duplicate][a] + [b] 和 [a].extend([b]) 有什么区别? [复制]
【发布时间】:2019-01-19 13:41:27
【问题描述】:

在 Python 中有两种方法可以将列表合并在一起:

  1. ['a', 'b', 'c'] + ['x', 'y', 'z']

  2. ['a', 'b', 'c'].extend(['x', 'y', 'z'])

这两种方法有什么区别?


连接超过 2 个列表的更 Pythonic 方式是什么?

['a', 'b', 'c'] + [1, 2, 3] + ['x', 'y', 'z']
gucci_list = ['a', 'b', 'c']
gucci_list.extend([1, 2, 3])
gucci_list.extend(['x', 'y', 'z'])

两者结合怎么样?

['a', 'b', 'c'].extend([1, 2, 3] + ['x', 'y', 'z'])

【问题讨论】:

  • 第一个创建一个新列表,第二个修改左边的列表。
  • 对于初学者来说,第二个选项使new_list 等于None(你试过了吗?)因为函数extend 不返回任何内容。
  • 很多类似的问题12,但没有找到骗子

标签: python arrays python-3.x list addition


【解决方案1】:

第一条语句从两个匿名列表中创建一个新列表并将其存储在变量new_list中:

new_list = ['a', 'b', 'c'] + ['x', 'y', 'z']
#['a', 'b', 'c', 'x', 'y', 'z']

第二个语句创建一个匿名列表['a','b','c'],并在其末尾附加另一个匿名列表(现在,第一个列表是['a', 'b', 'c', 'x', 'y', 'z'])。 但是,该列表仍然是匿名的,以后无法访问。由于方法extend什么都不返回,所以赋值后变量的值为None

new_list = ['a', 'b', 'c'].extend(['x', 'y', 'z'])
#None

第二个语句可以通过首先命名列表然后改变它来变得有用:

old_list = ['a', 'b', 'c']
old_list.extend(['x', 'y', 'z']) # Now, the old list is a new list

【讨论】:

    【解决方案2】:

    第一个从这两个创建一个新数组。 第二个改变了原始列表。

    【讨论】:

      【解决方案3】:

      ['a', 'b', 'c'] + ['x', 'y', 'z'] 创建一个新列表。

      ['a', 'b', 'c'].extend(['x', 'y', 'z']) 通过添加第二个列表来修改第一个列表。由于第一个列表没有被变量引用,因此结果列表将不再可访问

      【讨论】:

        猜你喜欢
        • 2013-06-25
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 2020-04-02
        • 2017-04-06
        • 1970-01-01
        相关资源
        最近更新 更多