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