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

16 浏览
0 Comments

如何在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]

0
0 Comments

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

有时候在处理列表的子列表时,我们想要将子列表中的某个元素追加到另一个列表中。然而,有些人在尝试这样做时会遇到问题。让我们来看看问题的原因以及解决方法。

问题的原因是使用x = y = []这样的语句创建了两个变量xy,并将它们引用到同一个列表上。这就导致了错误的输出。通过查看对象ID,我们可以发现它们是相同的。

解决这个问题的方法是分别创建xy的空列表,并在循环中迭代处理子列表时,将子列表的元素追加到相应的列表中。

下面是修复问题后的正确结果:

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

这样,xy将分别包含所有子列表的第一个和第二个元素。

不过,我们也可以通过使用zip函数来更简洁地实现这个目标:

x,y = zip(*lst)

这个方法会将lst中所有子列表的第一个元素组合成一个新的列表x,将所有子列表的第二个元素组合成一个新的列表y

最后,我们还需要注意的是,不要将变量名命名为list,因为它会覆盖内置函数list

通过修复变量引用问题或使用zip函数,我们可以很方便地将子列表的元素追加到另一个列表中。

0
0 Comments

在Python中,当你使用x = y = []这样的语句时,你实际上是让xy引用同一个列表。因此,当你修改其中一个列表时,另一个列表也会被修改。关于引用是如何工作的,这里有一个很好的解释here

因此,如果你想要创建两个独立的空列表,你可以使用下面的代码:

x = []
y = []

另外,你也可以尝试使用zip函数来实现:

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

正如Sukrit所说,不要将list作为变量名(或者intstr等),因为虽然它是Python的内置函数(加载一个解释器并输入help(list),你会发现Python已经预定义了list的含义),但Python会毫不客气地让你重新定义(也称为隐藏)它。这可能会导致以后的代码出现问题。

0
0 Comments

在Python中,有一个关于如何向子列表中添加元素的问题。问题的原因在于,当我们像这样构造x和y:x = y = []时,x和y指向同一个列表。如果我们想要让它们成为不同的列表,我们应该这样声明它们:

x = []
y = []

解决方法就是将x和y声明为不同的空列表。这样,当我们向它们中的一个列表添加元素时,另一个列表不会受到影响。

0