【发布时间】:2021-05-15 12:33:42
【问题描述】:
跟进this 关于如何在外部增量的列表理解中实现enumerate 的问题,我想知道是否有办法调整accepted answer 以创建一个inner 这次增加;我正在寻找生成此输出:
['D_50_1-1_1',
'D_50_2-1_2',
'D_50_3-1_3',
'D_80_1-2_1',
'D_80_2-2_2',
'D_80_3-2_3',
'D_20_1-3_1',
'D_20_2-3_2',
'D_20_3-3_3',
'D_60_1-4_1',
'D_60_2-4_2',
'D_60_3-4_3',
'E_35_1-5_1',
'E_35_2-5_2',
'E_35_3-5_3',
'E_25_1-6_1',
'E_25_2-6_2',
'E_25_3-6_3']
其中内部增量是倒数第二列 (1,1,1,2,2,3,3,3 ...6,6,6)。
目前,我通过根据levelB 的长度硬编码增量(例如list(range(1, 4+1)))来实现这一点,这显然容易出错:
[f'{levelA}_{levelB}_{sub}-{inner_increment}_{sub}'
for levelA, pairs in
[('D', dict(zip([50,80,20,60], list(range(1, 4+1))))),
('E', dict(zip([35, 25], list(range(5, 7+1)))))]
for levelB,inner_increment in pairs.items()
for sub in range(1, 3+1)
]
有没有办法通过引入enumerate 来产生相同的输出,同时保持列表理解方法并且理想情况下没有任何导入,类似于另一个问题中接受的答案?
【问题讨论】:
-
我的第一个答案是错误的
标签: python list-comprehension enumerate