如何根据Python中的特定条件在较大的列表中拆分列表?

如何根据Python中的特定条件在较大的列表中拆分列表?,python,python-3.x,list,Python,Python 3.x,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_li

我有一个列表
我的列表=[[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_列表(数组,break_num):
out=[]
对于阵列中的内部:
如果在内部断开\u num:
索引=内部索引(break_num)
第一个=内部[:索引]
第二个=内部[索引:]
out.append(第一个)
out.append(第二个)
其他:
out.append(内部)
返回
这假设在
内部
中最多有一个
break_num
实例,并且
数组
是一个2D列表

你用你最初的称呼方式来称呼它,效果很好

arr=[[1,2,3,4],[8,9],[89,90]] >>>中断列表(arr,3) [[1, 2], [3, 4], [8, 9], [89, 90]]
我想知道
中断列表([[3,2,1]],3)
的结果是否是OP期望的结果?可能是。我不这么认为,但是如果您在遍历这个空列表并期望它有4个元素,那么删除它是错误的