我在程序中使用的当前输入是一个坐标列表:
data = [["D_02", "10", "10", "20"],
["X_03", "10", "10", "20"]]为了方便使用和方便起见,我还想传递一份清单清单:
have
data = [[["B_01"], ["10"], ["10", "20"], ["10", "20"]],
["D_02", "10", "10", "20"],
["X_03", "10", "10", "20"]]然后能够“爆炸”它,使它像下面这样:
want
data = [["B_01", "10", "10", "10"],
["B_01", "10", "10", "20"],
["B_01", "10", "20", "10"],
["B_01", "10", "20", "20"],
["D_02", "10", "10", "20"],
["X_03", "10", "10", "20"]]我知道,对于具有product包的itertools函数的列表,可以这样做:
import itertools
list(itertools.product(*data))然而,
发布于 2021-07-26 09:49:36
仅当行的第一项是列表时才使用itertools.product:
final = []
for l in data:
if isinstance(l[0], list): # <- ["B01"]
for c in itertools.product(*l[1:]):
final.append(l[0] + list(c))
else:
final.append(l)>>> final
[['B_01', '10', '10', '10'],
['B_01', '10', '10', '20'],
['B_01', '10', '20', '10'],
['B_01', '10', '20', '20'],
['D_02', '10', '10', '20'],
['X_03', '10', '10', '20']]https://stackoverflow.com/questions/68527640
复制相似问题