如何从 forloop 更新嵌套列表的元素 - Python

How to update element of nested list from forloop - Python

我想根据循环中的输出更新嵌套列表中的元素。但是,如果没有笨重的嵌套 for 循环,我不知道该怎么做。我怀疑使用 zip 是必要的,但还没有弄清楚如何使用它。

我有一个空的嵌套列表,我想在循环进行时填充它:

empty_list = [[], [], []]

我有一个单独的嵌套列表,其元素数量与 empty_list:

中的列表相同

lst = [[x], [y], [z]]

然后我想为 lst 中的每个元素生成一些循环输出。我想要的结果是:

no_longer_empty_list = [[[x], [output_x_1], [output_x_2]], 
[[y], [output_y_1], [output_y_2]], 
[[z], [output_z_1], [output_z_2]]]

其中 output_x_1output_x_2 是循环中被解析的元素为 x 时循环的输出(yz)

这是我目前用伪代码构建的内容:

for elem in lst:
    if condition holds:
       generate output_1
       append output_1 to appropriate spot in empty_list  
    elif other condition holds:
       generate output_2
       append output_2 to appropriate spot in empty_list

我苦苦挣扎的地方是如何将输出附加到 empty_list 中的正确列表。

如果 syntax/explanation 令人困惑,我深表歉意,我已尝试将其提炼成易于理解的格式,但如果仍然不清楚,我会尽力解释

假设您有 2 个函数; generate_out1()generate_out2() 以及包含元素 x、y、z 的列表,其中每个元素都可以是一个列表。

result = []
lst = [x, y, z]

for elem in lst:
   temp = [elem]
   temp.append(generate_out1(elem))
   temp.append(generate_out2(elem))
   result.append(temp)

这是一个解决方案,您可以将 processFunc 修改为 return 您的 [output_y_1, output_y_2]。而且我认为不需要 empty_list

lst = [[1], [3], [5]]

def processFunc(item):
    return [item + 1, item + 2]

def generateList(lst, processFunc):
    return [map(lambda x: [x], x + processFunc(x[0])) for x in lst]

print(generateList(lst, processFunc)) // [[[1], [2], [3]], [[3], [4], [5]], [[5], [6], [7]]]