繁体   English   中英

如何在python中追加子列表的元素

[英]How to append an element of a sublist in python

我有一个表格列表:

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]

通过执行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)

PS - 请不要使用list作为变量名称,它会影响内置。

当你说x = y = [] ,你会导致xy成为对同一列表的引用。 因此,当您编辑其中一个时,您可以编辑另一个。 关于引用如何工作, 这里有一个很好的解释。

因此,如果您改为使用代码,则可以使用代码

x = []; y = []

您也可以尝试使用zip

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

正如Sukrit所说,不要使用list作为变量名(或intstr或者你有什么),因为虽然它是内置的Python(加载解释器并输入help(list) - 事实上有些东西弹出up意味着Python有预先定义的list来表示某些东西)Python会高兴地让你重新定义(也就是阴影)它。 哪个会破坏你的代码。

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

x = []
y = []

您正在设置x = y = []意味着x指向指向列表的y,因此无论何时附加到一个,您都要附加到另一个。 将代码更改为以下内容:

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

你可以做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM