如何根据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], []]