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

时间:2019-07-09 06:24:39

标签: python numpy

我有一个列表

 L= [1,3,3,4,4,5,5,7,8,9,9,9].

创建自定义列表的规则是:主列表(L)中的当前元素应小于主列表(L)中的下一个元素。

例如: 列表(L)中的第一个元素

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

2)接下来的3个不少于3个,我们现在应该跳过(下一次迭代,我们必须使用这3个)

3)比较当前迭代3中的4,即3小于4,然后将3加到(new_list)中并从主列表中删除(L).

4)接下来比较4与下一个数字4将不小于然后跳过

像这样,我要创建一个自定义列表编号,其中包含可能的自定义列表列表。

第一次迭代in new_list [[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]]

2 个答案:

答案 0 :(得分:1)

这是一种实现方法:

DECLARE
    givendate   DATE := TO_DATE('2019-07-01', 'YYYY-MM-DD');
    out         NUMBER := 1;  
BEGIN
  WHILE out != 0 LOOP
    SELECT
        COUNT(*)
    INTO out
    FROM
        holiday h
    WHERE
        trunc(h.holiday_date) = trunc(givendate);
    IF out != 0 THEN
        givendate := givendate + 1;
    END IF;
  END LOOP;
  DBMS_OUTPUT.put_line(givendate);
END;

输出:

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))

答案 1 :(得分:0)

  

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

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