簡體   English   中英

如何根據 Python 中的特定條件在更大的列表中分解列表?

[英]How do I break up a list within a larger list based on a specific condition in Python?

我有一個列表my_list = [[1, 2, 3, 4], [8, 9], [89, 90]] 我想通過掃描較大列表中的每個列表來分解它。 如果滿足條件(例如,如果找到3 ),我想將該內部列表分成兩個列表。

期望的最終結果應該是[[1, 2], [3, 4], [8, 9], [89, 90]]

但我的代碼如下:

def break_list_by_specific_number(list_of_lists, break_num):
    list_holder = []
    for each_list in list_of_lists:
        i = (list(g) for _, g in groupby(each_list, key=break_num.__ne__))
        list_holder += ([a + b for a, b in zip_longest(i, i, fillvalue=[])])
    return list_holder

print(break_list_by_specific_number(my_list, 3))

它錯誤地將其分解為[[1, 2, 3], [4], [8, 9], [89, 90]]

你可以這樣寫得更快、更簡單:

def break_list(array, break_num):
    out = []
    for inner in array:
        if break_num in inner:
            index = inner.index(break_num)
            first = inner[:index]
            second = inner[index:]
            out.append(first)
            out.append(second)
        else:
            out.append(inner)
    return out

這假設inner最多有 1 個break_num實例,並且該array是一個二維列表。

你調用它的方式與你最初調用它的方式相同,它工作得很好。

>>> arr = [[1, 2, 3, 4], [8, 9], [89, 90]]
>>> break_list(arr, 3)
[[1, 2], [3, 4], [8, 9], [89, 90]]

暫無
暫無

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

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