簡體   English   中英

Python列表理解錯誤

[英]Python list comprehension error

我想訂購一份清單,數月之內

months = ["Jan", "Feb", "March", "April",
          "May", "June", "July", "Aug",
          "Sept", "Oct", "Nov", "Dec"]

此功能有效,但我想改用列表理解

def order(values):
    sorted = []
    for month in months:
        if month in values:
            sorted_.append(month)
    return sorted_

order(["April","Jan", "Feb"]

輸出-['Jan','Feb','April']

我試過這個但是我收到語法錯誤,我不確定為什么

sorted_ = [month if month in values for month in months]

嘗試這個

values = ["Sept","Oct"]

sorted_ = [month for month in months if month in values]

您的列表理解語法有點差。

在列表推導中有兩種不同的條件處理方式,這取決於您是否具有else子句:

沒有else子句:

[x for x in y if x == z]
[result for element in list if conditional]

與else子句:

[x if x == z else -x for x in y]
[result if conditional else alternative for element in list] 

注意:這些也可以組合:

[x if x.name == z else None for x in y if x is not None]
[result if conditional2 else alternative for element in list if conditional1]

等效於:

total_result = []
for x in y:
    if conditional1:
        if conditional2:
            total_result.append(result)
        else:
            total_result.append(alternative)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM