如何根据python中的条件从现有列表创建自定义列表?

如何根据python中的条件从现有列表创建自定义列表?,python,numpy,Python,Numpy,我有一张单子 L= [1,3,3,4,4,5,5,7,8,9,9,9]. 创建自定义列表的规则是:主列表L中的当前元素应小于主列表L中的下一个数字 例如: 在列表中,从第一个元素开始 1 1小于列表L中的下一个数字3,然后将1添加到新列表new_列表,然后从主列表L中删除 2下一个3不小于3我们应该跳过下一个迭代我们必须使用这个3 在当前迭代中,将3与4进行比较,即3小于4,然后将3添加到新的_列表中,并从主列表中删除 4下一个将4与下一个数字4进行比较将不小于然后跳过 像这样,我想创建一个

我有一张单子

 L= [1,3,3,4,4,5,5,7,8,9,9,9].
创建自定义列表的规则是:主列表L中的当前元素应小于主列表L中的下一个数字

例如: 在列表中,从第一个元素开始

1 1小于列表L中的下一个数字3,然后将1添加到新列表new_列表,然后从主列表L中删除

2下一个3不小于3我们应该跳过下一个迭代我们必须使用这个3

在当前迭代中,将3与4进行比较,即3小于4,然后将3添加到新的_列表中,并从主列表中删除

4下一个将4与下一个数字4进行比较将不小于然后跳过

像这样,我想创建一个包含可能的自定义列表列表的自定义列表

在新_列表[[1,3,4,5,7,8,9]]和L=[3,4,5,9,9]中第一次迭代后的预期输出

我的最终预期输出如下:[[1,3,4,5,7,8,9],[3,4,5,9],[9]]

我想确定可以从现有列表创建的自定义列表的数量


由于您只想确定最后获得的此类列表的数量,而不是实际的列表,因此可以按如下方式轻松计算。遍历列表,检查条件是否小于或等于,并递增计数器,直到满足,如果不满足,则重新初始化计数器为零。继续穿越。最后,打印在任何步骤中获得的计数器的最大值,这将是答案

以下是一种方法:

result = []
while len(L)>0:
    indexes_to_remove = []
    result_temp = []
    L = L_temp
    for i in range(len(L)-1):
        if L[i]<L[i+1]:
            result_temp.append(L[i])
            indexes_to_remove.append(i)
    # Since there is a 9 at the end of each of your list I assume that
    # you add the last value of your list at each iteration
    if len(L)>0:
        result_temp.append(L[len(L)-1])
        indexes_to_remove.append(len(L)-1)
    L_temp = [i for j, i in enumerate(L) if j not in indexes_to_remove]  
    result.append(result_temp)
    print("L = {}; result = {}".format(L, result))

你能补充一下,到目前为止你尝试了什么?如果你能如此准确地描述算法,你应该能够将其转化为代码。你有什么问题?为什么你的列表中包括9个?因为它们不小于它们后面的任何数字,所以它们不遵循任何规则。是否有一个特定的规则来包含它们?如果是最后一个元素或最后一个元素,我们必须添加到列表中
L = [1, 3, 3, 4, 4, 5, 5, 7, 8, 9, 9, 9]; result = [[1, 3, 4, 5, 7, 8, 9]]
L = [3, 4, 5, 9, 9]; result = [[1, 3, 4, 5, 7, 8, 9], [3, 4, 5, 9]]
L = [9]; result = [[1, 3, 4, 5, 7, 8, 9], [3, 4, 5, 9], [9]]
L = []; result = [[1, 3, 4, 5, 7, 8, 9], [3, 4, 5, 9], [9], []]