为什么我不能在一个大列表中扩展两个单独的列表 [重复]

why cant i extend two separated lists inside one big list [duplicate]

提问人:Youssef Joe 提问时间:8/19/2023 更新时间:8/19/2023 访问量:55

问:

我有一个包含三个列表的列表,我试图将其转换为一个列表,其中包含 3 个独立列表中的所有项目,并且顺序相同

例如,我有一个列表“B”,里面有 3 个列表。我在 (len(B)-1) 范围内运行了 for 循环,应用了以下命令:

B[0]=B[0].扩展(B[1])

但是 B[0] 的值变为 None。我不知道为什么

小提示:我正在解决的问题是阻止我在代码中使用任何 if 条件

Python 嵌套列表

评论

3赞 Swifty 8/19/2023
这可能有助于扁平化您的列表:stackoverflow.com/questions/952914/...... ;至于你遇到的问题,是一个就地方法,它返回 None:stackoverflow.com/questions/11205254/....extend
0赞 Kenny Ostrom 8/19/2023
我建议一种稍微不同的方法:docs.python.org/3/library/......
0赞 Karl Knechtel 8/19/2023
“但是 B[0] 的值变成了 None。我不知道为什么“——因为这就是返回的结果,你分配了这个结果。请参阅链接的副本。.extend
0赞 Karl Knechtel 8/19/2023
“我有一个包含三个列表的列表,我试图将其转换为一个列表,其中包含 3 个单独列表中的所有项目,并且顺序相同” - 然后,与其询问您解决问题的方法,不如简单地询问该任务。

答:

0赞 Tom Karzes 8/19/2023 #1

list 方法以破坏性方式修改列表并返回 。所以任务extendNone

B[0]=B[0].extend(B[1])

首先通过扩展它来修改它,然后根据赋值将其替换为。您可以将其替换为:B[0]None

B[0].extend(B[1])

这将通过使用 扩展它来进行破坏性修改。它等价于 ,它也破坏性地修改了 。B[0]B[1]B[0] += B[1]B[0]

这解释了您的代码当前正在执行的操作,但并不能解决您的问题。如果您只想创建一个新列表,即子列表的串联,您可以执行以下操作:

new_list = sum(B, [])

这将创建一个由子列表串联组成的新列表。

评论

0赞 Swifty 8/19/2023
您甚至可以将其替换为在扩展 B[0] 的同时删除 B[1]。B[0].extend(B.pop(1))