我的目标是创建一个班轮以产生以下列表:
list_100 = ['ch1%.2d' % x for x in range(1,6)]
list_200 = ['ch2%.2d' % x for x in range(1,6)]
final_list = list_100 + list_200
[ch101,ch102,ch103,ch104,ch105, ch201,ch202,ch203,ch204,ch205]
是否可以通过某种方式做到这一点:
final_list = ['ch%.1d%.2d' % (y for y in range(1,3), x for x in range(1,6)]
答案 0 :(得分:2)
也许是这样?
final_list = ['ch{}0{}'.format(x,y) for x in range(1,3) for y in range(1,6)]
要解决以下评论,您可以将x
乘以10:
final_list = ['ch{}{}'.format(x*10,y) for x in range(1,12) for y in range(1,6)]
答案 1 :(得分:2)
您非常亲密:
>>> ['ch%.1d%.2d' % (y, x) for y in range(1,3) for x in range(1,6)]
['ch101',
'ch102',
'ch103',
'ch104',
'ch105',
'ch201',
'ch202',
'ch203',
'ch204',
'ch205']
答案 2 :(得分:1)
这是无效的python:
final_list = ['ch%.1d%.2d' % (y for y in range(1,3), x for x in range(1,6)]
...由于未括上括号。
您要
print(['ch{}0{}'.format(i, j) for i in range(1, 3) for j in range(1,6)])
结果:
['ch101', 'ch102', 'ch103', 'ch104', 'ch105', 'ch201', 'ch202', 'ch203', 'ch204', 'ch205']
答案 3 :(得分:0)
我会做的:
final_list=["ch{}{:02d}".format(x,y) for x in (1,2) for y in range(1,6)]
#['ch101', 'ch102', 'ch103', 'ch104', 'ch105',
'ch201', 'ch202', 'ch203', 'ch204', 'ch205']
或者,结合您拥有的东西没有错:
final_list=['ch1%.2d' % x for x in range(1,6)]+['ch2%.2d' % x for x in range(1,6)]
答案 4 :(得分:0)
您还可以使用itertools.product
来产生值。
>>> from itertools import product
>>> ['ch{}{:02}'.format(x, y) for x, y in product(range(1,3), range(1, 6))]
['ch101', 'ch102', 'ch103', 'ch104', 'ch105', 'ch201', 'ch202', 'ch203', 'ch204', 'ch205']