展开嵌套列表比较



我想了解在python或pythonic中扁平化嵌套列表的两种代码结果的差异。也许我在Python代码上犯了一个错误,但如果我没有,有人能解释结果的差异吗?以下代码:

nested_list = [['rodrigo'],['fernanda','lorena','marcela'],['carolina'],['marcio','cristina','patricia','regina']]
# Regular programing
flat_list = []
for list in nested_list:
for element in list:
flat_list.append(element)
print(flat_list)
# Results: ['rodrigo', 'fernanda', 'lorena', 'marcela', 'carolina', 'marcio', 'cristina', 'patricia', 'regina']

# Pythonic
flat_list = [element for element in list for list in nested_list]
print(flat_list)
# Results: ['marcio', 'marcio', 'marcio', 'marcio', 'cristina', 'cristina', 'cristina', 'cristina', 'patricia', 
#    'patricia', 'patricia', 'patricia', 'regina', 'regina', 'regina', 'regina']```

您的第二个代码通过"事故;因为您继续使用第一个解决方案中定义的名称list,因此它表示输入的最后行。

它实际上是这样做的:

flat_list = []
for element in list:
for list in nested_list:
flat_list.append(element)
print(flat_list)

如果您将list更改为mylist(一个尚未使用的名称(,您会看到您的代码和此解释性代码都会遇到错误。

您的第二个解决方案应该按相反的顺序执行:

flat_list = [element for lst in nested_list for element in lst]

此外,使用Python(list(已经使用过的名称也不是一个好主意。

相关内容

  • 没有找到相关文章

最新更新