Combining elements in list: seems like python treats the same item in two different ways and I don't know why
本问题已经有最佳答案,请猛点这里访问。
我正努力通过法典学院,我有一个问题在那里没有答案。任务是获取一个列表,并列出所有元素的单个列表。下面的代码就是我的答案。但我不明白的是,为什么"item"在该代码的列表中被视为元素,而(请参见下面的注释)。
1 2 3 4 5 6 7 8 9 10 11 12 | 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) |
…下面代码中的"item"被视为整个列表,而不是列表中的元素。下面的代码给出了输出:
1 | [[1, 2, 3], [4, 5, 6], [7, 8, 9]] |
号
我还尝试使用:new_list.append(item[0:][0:]),以为它将遍历索引和子索引,但得到了相同的结果。我只是不明白这是怎么解释的。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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会对这些进行不同的解释。
列表中的
另一方面,
1 2 3 4 5 6 7 | >>> lst = [] >>> lst.extend([1, 2, 3]) >>> lst [1, 2, 3] >>> lst.append([1, 2, 3]) >>> lst [1, 2, 3, [1, 2, 3]] |
马蒂金(一如既往)解释得很好。然而,(仅供参考)Python疗法将是:
1 2 3 | def join_lists(*args): from itertools import chain return list(chain.from_iterable(args)) |
号