簡體   English   中英

給定輸入值時,從列表列表中返回列表

[英]Return lists from a list of lists when given an input value

我已經在這個問題上堅持了一段時間,但似乎無法找到解決方案,因此我請求幫助。 PS:編程還是有點新鮮

我在列表中有列表:

[(2012, 'january', 'monday'), (2012, 'february', 'monday'), (2012, 'january', 'tuesday')]

我想要的是一個帶有列表的新列表,當輸入“monday”時:

[(2012, 'january', 'monday'), (2012, 'february', 'monday')]

到目前為止我的代碼:

lists = [(2012, 'january', 'monday'), (2012, 'february', 'monday'), (2012, 'january', 'tuesday')]

day = input("Give day: ") #monday

def select_monday(lists, day):
    list2 = []
    for list in lists:
        if list[2] == day: #from here I'm stuck and do not know how to continue
            list2.append(list[2])
        else:
            return None
    return list2

結果: None

我不知道如何獲得具有特定值的所有列表

你的代碼很好,除了你不需要else語句,因為否則在下一次迭代中你會丟失前面步驟的結果; 你也應該實際調用你的函數:

lists = [(2012, 'january', 'monday'), (2012, 'february', 'monday'), (2012, 'january', 'tuesday')]

day = input("Give day: ") #monday

def select_monday(lists, day):
    list2 = []
    for list in lists:
        if list[2] == day: #from here I'm stuck and do not know how to continue
            list2.append(list)
    return list2

print(select_monday(lists, day))

這是一個更緊湊的功能:

def select_monday_2(lists, day):
    return list(filter(lambda x: x[2] == day, lists))

print(select_monday_2(lists, day))

如果當天不是星期一,則返回“ None ”。 這效果更好:

def select_monday(lists, day):
    list2 = []
    for lst in lists:
        if lst[2] == day:
            list2.append(lst)
    return list2

此外,附上整個清單,而不僅僅是工作日。 最后,最好不要使用list作為變量名,因為它是內置的。

現在:

>>> select_monday(lists, day)
[(2012, 'january', 'monday'), (2012, 'february', 'monday')]

更短的替代方案,使用列表理解:

>>> [x for x in lists if x[2] == day]
[(2012, 'january', 'monday'), (2012, 'february', 'monday')]

這個問題是else語句。 如果其中一個檢查是假的,那么它將return None 刪除else語句並刪除append語句中列表中的[2] ,除非您只想追加當天。

lists = [(2012, 'january', 'monday'), (2012, 'february', 'monday'), (2012, 'january', 'tuesday')]

day = input("Give day: ") #monday

def select_monday(lists, day):
    list2 = []
    for list in lists:
        if list[2] == day: #from here I'm stuck and do not know how to continue
            list2.append(list)
    return list2

暫無
暫無

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

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