2017-04-26 60 views
0

我想在元組列表上使用map函數。每個元組都有三個元素,我想用嵌套if來測試元組中每個元素,如下所示。如何在包含元組元素的列表上使用map函數?

def decision(*sm): 
    smoker=sm[0] 
    age=sm[1] 
    diet=sm[2] 
    if smoker=="yes": 
     if age<29.5: 
      return "less risk" 
     elif age>29.5: 
      return "more risk" 
    elif smoker=="no": 
     if diet=="good": 
      return "less risk" 
     elif diet=="poor": 
      return "more risk" 

health=[('yes', 21, 'poor'), ('no', 50, 'good')] 
print list(map(decision,health)) 

它給出錯誤tuple index out of range

回答

2

Python的map(..)將第一個參數視爲一個函數(可調用),並且在每個調用中它傳遞第二個參數(它將迭代)的一個元素。考慮到這一點,你必須作出以下修正:

刪除變量參數,並接受一個列表,而不是:

def decision(sm): #Remove '*' 
+0

謝謝SuperSaiyan它的工作。 –

相關問題