i有3个项目元组的列表 i,j,k,其中 i 是我的输出变量, j是时间(因此设置数据集的序列)和 k 是输入变量。由于后来列举了订单,因此第一个"命中"需要在结果集中停留在POSN 1中。
。我想提取[i,j]的:
- k = 0.1(圆形)
- 每5个k = 0.1,但不是每10个
- 仅在连续有十个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')]