擅长:python、mysql、java
<p>我要做的是迭代原始列表,考虑由降序的当前子列表组成的临时列表,并在它停止降序时弹出它。你知道吗</p>
<pre><code>def sublists(l):
result = [] # the list of sub-lists
sublist = [] # temporary sub-list kept in descending order
for i in range(len(l)):
sublist.append(l[i]) # add the element
if(i == len(l) - 1 or l[i] < l[i+1]):
result.append(sublist)
sublist = []
return result
</code></pre>
<p>在if语句中,发生的情况是当到达列表末尾(i==len(l)-1)或到达降序(l[i]<;l[i+1])时停止。注意,您需要编写<code>i == len(l) - 1 or l[i] < l[i+1]</code>而不是<code>l[i] < l[i+1] or i == len(l) - 1</code>,否则会出现边界外错误(此时访问<code>l[i+1]</code>是非法的)</p>
<p>这将保留列表中的所有元素,并为已排序的列表(具有不同元素)生成所有单例,而不是简单地将它们丢弃。这就是为什么我在这里添加了我的答案,而不是@Ch3steR的答案</p>