我有一个嵌套列表,每个嵌套列表中包含两个元素,第二个元素是条件列表。
lst = [[2, 1], [5, 1], [10, 1], [9, 1], [10, 2], [18, 2]]
如果子列表中的第一个索引小于列表中所有1的后续列表中的第一个索引(第二个子列表元素),则计数器值应该递增1。同样,对于列表中的所有2个。例如,计数器设置为1.对于列表中的所有1:2< 5,5< 10 - 计数器保持在1.然而,在下一个比较中10< 9为假,因此计数器增加1.程序应该打印2.现在对于列表中的所有2,10< 18,因此计数器变量只打印1.因此程序打印2 1作为其输出。
我对如何实现这一点感到有些困惑。所以我开始一步一步地思考它。有一个比较每个第一个索引的for循环是有意义的。所以我所做的是将每个第一个子列表元素附加到一个新列表。
count = 1
newlst = []
for item in lst:
newlst.append(item[0])
列表如下所示:
[2, 5, 10, 9, 10, 18]
但是,即使我比较所有这些值,即检查索引是否<索引+ 1.它不会输出2 1.很可能,它只输出1.如何在第二个子列表元素的基础上对所有1和那么进行比较2' S?还有另一种方法可以让程序输出2 1吗?
注意:列表的输入不一定是这个列表,它可以是每个子列表中包含2个元素的任何嵌套列表,即[[4,1],[8,1],[1,2], [6,2],[15,3],[9,3]] - 输出为1 1 2。
答案 0 :(得分:0)
此程序从您的第一个数据集中获取describe('Wrapper', function() {
var _startup = function(done) {
login();
window.setTimeout(done, 150);
};
var _shutdown = function() {
logout();
};
describe('Inner 1', function() {
beforeAll(_startup);
afterAll(_shutdown);
});
describe('Inner 2', function() {
beforeAll(_startup);
afterAll(_shutdown);
});
describe('Inner 3', function() {
beforeAll(_startup);
afterAll(_shutdown);
});
});
:
2 1
答案 1 :(得分:0)
在澄清问题之后,我必须提及@Robᵩ,他几乎已经钉了它。
from itertools import groupby
lst = lst=[[4, 1], [8, 1], [1, 2], [6, 2], [15, 3], [9, 3]]
for __,grp in groupby(lst, key=lambda x:x[1]):
grp = list(grp)
print (sum((i<j) for i,j in zip(grp[1:],grp))+1)
只有必须改变的是zip()中两个列表的顺序,并且还添加+1
,因为计数器应该从一个开始。
现在这应该打印出你想要的输出。