years = list(range(2001,2003+1)
months = list(range(1,12+1)
我想得到如下所示的列表,其中包括所有月份和所有年份:
required = ['1.2001', '2.2001', '3.2001'...'12.2001', ....'1.2002', '2.2002', '3.2002'...'12.2002', '1.2003', '2.2003', '3.2003'...'12.2003']
我的错误代码,但预期的编码方式如下:
required = [x + '.' + (str(y) for y in years) for x in months]
寻找解决问题的最简单方法。
答案 0 :(得分:3)
您可以生成数字范围并在开头将其转换为字符串
years = list(map(str, range(2001,2004)))
months = list(map(str, range(1,13)))
然后你可以像这样使用itertools.product
from itertools import product
print([".".join(item[::-1]) for item in product(years, months)])
# ['1.2001', '2.2001', '3.2001', '4.2001', '5.2001', '6.2001'...
更简单,您的程序可以像这样修复
print([y + '.' + x for x in years for y in months])
注意:我假设您使用的是Python 3.x
答案 1 :(得分:1)
['%d.%d' % (m, y) for y in years for m in months]