合并列表中的元素:好像python用两种不同的方式对待同一个项目,我不知道为什么[重复]
这个问题已经在这里有了答案 :
什么时候“ 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会以不同的方式解释它们。
-
该
+=
名单上就地增加操作符做同样的事情与调用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]]