【问题标题】:concatenate lists in python在python中连接列表
【发布时间】:2012-08-09 23:56:58
【问题描述】:

我有一个名为 x 的 3x2 列表和一个名为 y 的 1x2 列表:

x=[[1,2],[3,4],[5,6]]

y=[10,20]

我的问题是如何将 y 连接到 x 的末尾以得到一个 4x2 列表,例如:

x=[[1,2],[3,4],[5,6],[10,20]]

我试过了:

xx=[x,y]

但它给了我这个不是 4x2 的列表:

xx=[[[1,2],[3,4],[5,6]],[10,20]]

【问题讨论】:

    标签: python list multidimensional-array


    【解决方案1】:
    >>> x = [[1, 2], [3, 4], [5, 6]]
    >>> x
    [[1, 2], [3, 4], [5, 6]]
    >>> x.append([10, 20])
    >>> x
    [[1, 2], [3, 4], [5, 6], [10, 20]]
    

    或者:

    >>> x = [[1, 2], [3, 4], [5, 6]]
    >>> x
    [[1, 2], [3, 4], [5, 6]]
    >>> x += [[10, 20]] # a list with a list as its only element
    >>> x
    [[1, 2], [3, 4], [5, 6], [10, 20]]
    

    【讨论】:

      【解决方案2】:

      给定:

      x = [[1,2],[3,4],[5,6]]
      y = [10,20]
      

      这个:

      x.append(y)
      

      会给你:

      [[1, 2], [3, 4], [5, 6], [10, 20]]
      

      注意然而,这修改 x

      如果你不想想修改x,这是另一种方式:

       xx = x + [y[:]]
      

      xx 设置为:

       [[1, 2], [3, 4], [5, 6], [10, 20]]
      

      我们在上面的赋值中使用y[:] 而不是简单的y,因为我们想在以后为xx 创建y 的单独副本,如果(原始)y 被修改它不会导致xx 的变化。

      【讨论】:

      • 请注意,即使在第二个示例中,您也可以通过修改 y 来间接修改 xx。 (例如xx = x + [y]; y.append(3))。
      • @mgilson Ah .. 很好,谢谢。我很快会用警告说明或代码修复来更新我的答案。
      • 它确实解决了我的评论,尽管我可能会在答案中添加一句话,说明您为什么使用 [y[:]] 而不仅仅是 [y]。这样,OP(或遇到此问题的任何其他人)可以拥有所有必要的信息来选择哪种表格更适合他们的应用程序。我的猜测是在这里创建浅拷贝可能是不必要的,但这个问题有点太模糊,无法确定。
      • :^) 那就慢慢来享受你的面条吧!
      【解决方案3】:
      >>> x=[[1,2],[3,4],[5,6]]
      >>> y=[10,20]
      >>> x.append(y)  # or x.append(list(y)) to append a shallow copy of y
      >>> x
      [[1, 2], [3, 4], [5, 6], [10, 20]]
      

      【讨论】:

      • @JonClements -- 虽然您(大部分)是正确的,但它确实具有稍微不同的含义。使用list(y) 意味着对y 的更改不会显示在x 中。换句话说,list(y) 附加了y 的(浅)副本,而不是实际的对象。
      • @mgilson 是的 - 我知道这一点。但是,由于 OP 不是很清楚,所以很可能一个简单的附加就可以了,y 可以在其他地方轻松愉快地进行。 Ashwini 在这里发表了很好的评论和更新......所以我为此 +1。
      【解决方案4】:

      如果你想要一个新列表:

      z = x + [y]
      

      请注意,使用 [y] 会使内容成为列表中的列表,这样就可以了。

      如果你想就地修改x,那么:

      x.append(y)
      

      【讨论】:

        【解决方案5】:

        虽然我自己不经常使用,但我觉得还是值得一提的列表的extend成员函数:

        >>> x=[[1,2],[3,4],[5,6]]
        >>> y=[10,20]
        >>> x.extend([y])
        >>> x
        [[1, 2], [3, 4], [5, 6], [10, 20]]
        

        http://docs.python.org/tutorial/datastructures.html#more-on-lists

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-29
          • 2017-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-09
          • 1970-01-01
          • 2010-12-15
          相关资源
          最近更新 更多