【问题标题】:How to append an element of a sublist in python如何在python中附加子列表的元素
【发布时间】:2013-07-22 19:16:52
【问题描述】:

我有一个表格列表:

list = [[3, 1], [3, 2], [3, 3]]

我想把它分成两个列表,一个包含每个子列表的 x 值,一个包含每个子列表的 y 值。

我目前有这个:

x = y = []
for sublist in list:
    x.append(sublist[0])
    y.append(sublist[1])

但这会返回这个,我不知道为什么:

x = [3, 1, 3, 2, 3, 3]
y = [3, 1, 3, 2, 3, 3]

【问题讨论】:

    标签: python list


    【解决方案1】:

    通过执行 x = y = [] 您正在创建 xy 并将它们引用到同一个列表,因此会出现错误的输出。 (下面的对象 ID 相同)

    >>> x = y = []
    >>> id(x)
    43842656
    >>> id(y)
    43842656
    

    如果你解决了这个问题,你会得到正确的结果。

    >>> x = []
    >>> y = []
    >>> for sublist in lst:
            x.append(sublist[0])
            y.append(sublist[1])
    
    
    >>> x
    [3, 3, 3]
    >>> y
    [1, 2, 3]
    

    不过,这样做可以使这变得相当容易。

    x,y = zip(*lst)

    P.S. - 请不要使用list 作为变量名,它会影响内置函数。

    【讨论】:

    • zip 解决方案非常简洁。
    【解决方案2】:

    当您说x = y = [] 时,您将导致xy 成为对相同 列表的引用。所以当你编辑一个时,你编辑另一个。 here 有一个很好的解释,说明参考是如何工作的。

    因此,如果你说,你可以使用你的代码

    x = []; y = []
    

    你也可以试试zip

    lst = [[3, 1], [3, 2], [3, 3]]
    x,y = zip(*lst)
    

    正如 Sukrit 所说,不要使用 list 作为变量名(或 intstr 或者你有什么),因为尽管它是 Python 内置的(加载解释器并输入 @ 987654331@ - 弹出某些东西的事实意味着 Python 已经预定义了 list 来表示某些东西)Python 会很高兴地让你重新定义(也就是影子)它。这可能会在以后破坏您的代码。

    【讨论】:

      【解决方案3】:

      那是因为当你像 x = y = [] 这样构造 x 和 y 时,x 和 y 指向同一个列表。如果你想让它们成为不同的列表,你应该像这样声明它们

      x = []
      y = []
      

      【讨论】:

        【解决方案4】:

        您正在设置x = y = [],这意味着 x 指向 y,y 指向列表,因此每当您附加到一个列表时,您就是在附加到另一个。把代码改成这样:

        x = [] 
        y = []
        for sublist in list:
            x.append(sublist[0])
            y.append(sublist[1])
        

        【讨论】:

          【解决方案5】:

          你可以这样做:

          x = [i[0] for i in list]
          y = [i[1] for i in list]
          

          【讨论】:

            猜你喜欢
            • 2017-12-18
            • 2019-06-23
            • 1970-01-01
            • 2016-09-17
            • 1970-01-01
            • 2016-08-27
            • 2023-03-09
            • 2014-05-11
            • 2021-11-27
            相关资源
            最近更新 更多