2016-03-11 5 views
0

Я использую календарь для определения количества дней в произвольном месяце и году на основе списка лет и списка месяцев. Я пытался передать список года и месяца список в calendar.monthrange, но объекты с:Итерационные входы в 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]] 

Я могу жить с решением, но я хотел бы знать, есть ли какой-нибудь способ, чтобы избежать использования двух вложенных «для» петли.

спасибо.

BSL

ответ

0

Похоже, я понял это:

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

где уу и мм списки.

Смежные вопросы