【问题标题】:Iterating inputs to calendar.monthrange迭代输入到 calendar.monthrange
【发布时间】:2016-03-11 16:00:14
【问题描述】:

我正在使用日历包根据年份列表和月份列表来确定任意月份和年份的天数。我试图将年份列表和月份列表传递给 calendar.monthrange,但它的对象是:

'TypeError: unorderable types: int() <= list().  

所以,我使用了以下代码(可行但笨拙)。有没有更优雅的方式?

# my code
def daysDuringMonth( yyyy, mm ):
    result  = [ ]
    for y in yyyy:
        for m in mm:
            dd = calendar.monthrange( y, m )
            result.append( y, m, dd[ 1 ] )
    return result

# input
yyyy = [ 2013, 2014 ]
mm   = [ 1, 2, 12 ]

# function call
daysDuringMonth( yyyy, mm )

# output
[[2013, 1, 31],
[2013, 2, 28],
[2013, 12, 31],
[2014, 1, 31],
[2014, 2, 28],
[2014, 12, 31]]

我可以接受解决方案,但我想知道是否有某种方法可以避免使用两个嵌套的“for”循环。

谢谢。

BSL

【问题讨论】:

    标签: list for-loop calendar iteration


    【解决方案1】:

    看来我想通了:

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

    yy 和 mm 是列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-31
      • 2013-02-20
      • 2022-11-14
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多