如何从 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_1
和 output_x_2
是循环中被解析的元素为 x
时循环的输出(y
和 z
)
这是我目前用伪代码构建的内容:
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]]]
我想根据循环中的输出更新嵌套列表中的元素。但是,如果没有笨重的嵌套 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_1
和 output_x_2
是循环中被解析的元素为 x
时循环的输出(y
和 z
)
这是我目前用伪代码构建的内容:
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]]]