繁体   English   中英

列表理解创建嵌套列表

[英]list comprehension creating nested lists

我想创建每年列表每月列表的嵌套列表:

[[ 31, 29, 31, 30 ], [ 31, 28, 31, 30 ] ]

mm = [ 1, 2, 3, 4 ]
yy = [ 2012, 2013 ]

但我的代码:

[ [ result.append( calendar.monthrange( y, m )[ 1 ] ) for m in mm] for y in yy ]        

产生:

[31, 29, 31, 30,  31, 28, 31, 30 ]

有人可以告诉我我做错了什么吗? 谢谢。 BSL

所以,我假设完整的代码如下所示:

result = []
[ [ result.append( calendar.monthrange( y, m )[ 1 ] ) for m in mm] for y in yy ]   
print(result)

您的代码的问题在于您对列表理解的理解。 列表理解会创建一个列表,因此您不应将任何内容附加到其中的另一个列表中。 现在,您只是将内容附加到结果,然后打印结果,现在实际上是从列表理解中创建一个列表。

这相当于你现在正在做的事情:

result  = [ ]
for y in yy:
    for m in mm:
        result.append( calendar.monthrange( y, m )[ 1 ] )

这相当于你想要做的事情:

result  = [ ]
for y in yy:
    year = []
    for m in mm:
        year.append( calendar.monthrange( y, m )[ 1 ] )
    result.append(year)

这是它的列表理解版本:

>>> result = [[calendar.monthrange( y, m )[ 1 ] for m in mm] for y in yy]
>>> print(result)

[[31, 29, 31, 30], [31, 28, 31, 30]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM