一尘不染

合并列表中的元素:好像python用两种不同的方式对待同一个项目,我不知道为什么

python

我正在通过CodeAcademy进行工作,那里有一个问题尚未得到解答。任务是获取列表列表,并为其所有元素制作一个列表。紧接下面的代码是有效的我的答案。但是我不明白的是为什么“项目”被视为该代码列表中的元素,而(请参见下面的注释)…

m = [1, 2, 3]
n = [4, 5, 6]
o = [7, 8, 9]

def join_lists(*args):
    new_list = []
    for item in args:        
        new_list += item
    return new_list


print join_lists(m, n, o)

…下面代码中的“项目”被视为整个列表,而不是列表中的元素。下面的代码给出了输出:

 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我还尝试使用: new_list.append(item [0:] [0:])
认为它会遍历索引和子索引,但给出的结果相同。我只是不明白这是怎么解释的。

m = [1, 2, 3]
n = [4, 5, 6]
o = [7, 8, 9]


def join_lists(*args):
    new_list = []
    for item in args:        
        new_list.append(item)
    return new_list


print join_lists(m, n, o)

另外,我知道我可以在上面的代码中添加另一个for循环,并且我知道为什么可以这样做,但是我仍然不明白为什么Python会以不同的方式解释它们。


阅读 224

收藏
2021-01-20

共1个答案

一尘不染

+=名单上就地增加操作符做同样的事情与调用list.extend()new_list.extend()进行迭代,并将每个元素添加到列表中。

list.append()另一方面,将 单个 项目添加到列表中。

>>> lst = []
>>> lst.extend([1, 2, 3])
>>> lst
[1, 2, 3]
>>> lst.append([1, 2, 3])
>>> lst
[1, 2, 3, [1, 2, 3]]
2021-01-20