根据所需值围绕的项目,多条件元组搜索



i有3个项目元组的列表 i,j,k,其中 i 是我的输出变量, j是时间(因此设置数据集的序列)和 k 是输入变量。由于后来列举了订单,因此第一个"命中"需要在结果集中停留在POSN 1中。

我想提取[i,j]的:

  1. k = 0.1(圆形)
  2. 每5个k = 0.1,但不是每10个
  3. 仅在连续有十个k = 0.1的情况下提取一个值,并且在有更多或更少的情况下无视(请注意,k = 0.1可以在任何点发生,所以我不能仅仅索引切片)

我可以做1.和2.但是刚刚有一个新的大数据集,其中3。现在是一个问题。

values = []
count = 0
    for i,j,k in zip(a, b, c):
        if float('%.1g' % k) == 0.1:
            count += 1
            if (count % 5) == 0 and (count % 10 != 0):               
                values.append([i,j])

示例(对不起,长度)

a, b, c
33, 1, 0
33, 2, 0
30, 3, 0
33, 4, 0
33, 5, 0.1
33, 6, 0.1 
31, 7, 0.1 
33, 8, 0.1 
37, 9, 0.1 
33, 10, 0.1 
33, 11, 0.1 
36, 12, 0.1 
33, 13, 0.1 
33, 14, 0.1
33, 15, 5
39, 16, 5
33, 17, 0.1 
33, 18, 0.1 
36, 19, 0.1 
33, 20, 0.1 
32, 21, 0.1
33, 22, 0.1 

我想从该列表中想要的只是[37,9],因为那是十个块的第5个条目= 0.1。

如果您只想要10个块的第五个条目,则使用简单的生成器函数仅返回10块的块,该块满足c == 0.1

def gen(a, b, c):
    g = []
    for i, j, k in zip(a, b, c):
        if format(float(k), '.1g') == '0.1':
            g.append((i,j))
        else:
            g = []
        if len(g) == 10:
            yield g
>>> [list(e)[4] for e in gen(a, b, c)]
[('37', '9')]

最新更新