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

发布于 2021-01-29 15:01:22

这个问题已经在这里有了答案

什么时候“ i + = x”与Python中的“ i = i + x”不同? (3个答案)

7年前关闭。

我正在通过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会以不同的方式解释它们。

关注者
0
被浏览
82
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    +=名单上就地增加操作符做同样的事情与调用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]]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看