使用列表理解修改嵌套列表元素
Modify nested list elements using list comprehension
我想生产 lst_new
这样,
items = (.1, .5, .9)
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
lst_new == [[[.1, 2, 3], [.4, 5, 6], [.7, 8, 9]], [[.5, 2, 3], [2, 5, 6], [3.5, 8, 9]], [[.9, 2, 3], [3.6, 5, 6], [6.3, 8, 9]]]
使用列表理解,
lst_new = [x[0] * i for i in items for x in lst]
但显然它没有按预期工作。帮忙?
你的问题是你只包括 x
的第一个值,而不是所有的值,你需要一个嵌套列表理解来增加列表结构的深度:
lst_new = [[[x[0] * m] + x[1:] for x in lst] for m in items]
输出
[
[[0.1, 2, 3], [0.4, 5, 6], [0.7, 8, 9]],
[[0.5, 2, 3], [2.0, 5, 6], [3.5, 8, 9]],
[[0.9, 2, 3], [3.6, 5, 6], [6.3, 8, 9]]
]
我想生产 lst_new
这样,
items = (.1, .5, .9)
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
lst_new == [[[.1, 2, 3], [.4, 5, 6], [.7, 8, 9]], [[.5, 2, 3], [2, 5, 6], [3.5, 8, 9]], [[.9, 2, 3], [3.6, 5, 6], [6.3, 8, 9]]]
使用列表理解,
lst_new = [x[0] * i for i in items for x in lst]
但显然它没有按预期工作。帮忙?
你的问题是你只包括 x
的第一个值,而不是所有的值,你需要一个嵌套列表理解来增加列表结构的深度:
lst_new = [[[x[0] * m] + x[1:] for x in lst] for m in items]
输出
[
[[0.1, 2, 3], [0.4, 5, 6], [0.7, 8, 9]],
[[0.5, 2, 3], [2.0, 5, 6], [3.5, 8, 9]],
[[0.9, 2, 3], [3.6, 5, 6], [6.3, 8, 9]]
]