带有多个循环的Python列表理解

时间:2018-07-17 23:01:11

标签: python list list-comprehension

我的目标是创建一个班轮以产生以下列表:

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)]

5 个答案:

答案 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']