具有多个循环的Python列表理解
我的目标是创建一个一行程序来生成以下列表:具有多个循环的Python列表理解,python,list,list-comprehension,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%.1
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)]
也许是这样的
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)]
也许是这样的
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)]
这是无效的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']
这是无效的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']
你非常接近:
>>> ['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']
你非常接近:
>>> ['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']
我会:
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)]
我会:
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)]
您还可以使用
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']
您还可以使用
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']
final_list=['ch1%.2d'%x代表范围(1,6)中的x]+['ch2%.2d'%x代表范围(1,6)]
有什么问题吗?final_list=['ch1%.2d'%x代表范围(1,6)中的x]+['ch2%.2d'%x代表范围(1,6)]
的一个问题是,一旦第二个数字超过9,它就会中断。这同样适用于另一个基于str.format
的解决方案。你是对的,我在提交此解决方案时注意到,但我采取了简单的方法,只是解决了问题:)-我也不清楚9之后的预期行为是什么。这个解决方案的一个问题是,一旦第二个数字超过9,它就会崩溃。这同样适用于另一个基于str.format
的解决方案。你是对的,我在提交此解决方案时注意到了这一点,但我采取了简单的方法,只是解决了问题:)-我也不清楚9之外的预期行为。实际上,我将有成百上千个这样的选项:row001_column00001到row001_column00100到row099_column00001到row999_column00100所以使用范围。嵌套列表理解对于您已经在做的事情没有任何固有的优势:两个理解和列表添加。实际上,我会有成百上千个这样的理解:row001_column00001到row001_column00100到row099_column00001到row999_column00100,所以请使用范围。嵌套列表理解并没有任何固有的优势:两个理解和列表添加。