在python中可能是简单的列表操作

时间:2014-03-25 13:49:25

标签: python

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]

寻找解决问题的最简单方法。

2 个答案:

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