首页 > 解决方案 > 获取具有特定上一个和下一个值的所有值

问题描述

我有以下包含元组的列表:

ov=[(0,), (1,), (0,), (0,), (0,), (0,), (1,), (1,), (1,), (1,), (1,), (0,), (1,), (1,), (1,), (0,), (1,), (1,), (1,), (1,), (1,), (None,)]

我现在想要1将之前的所有值0存储在一个单独的列表中。

每次存储的最后一个值应该是0或者如果存在None不应该存储的值。

所以我想要一个结果:

result =[1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1]

我已经有了以下功能:

def previous_and_next(something):
    prevs, items, nexts = tee(something, 3)
    prevs = chain(["NONE"], prevs)
    nexts = chain(islice(nexts, 1, None), ["NONE"])
    return zip(prevs, items, nexts)

并遵循 for 循环:

for previous, item, nxt in previous_and_next(ov):
    if item[0]==1 and previous[0]==0 and nxt[0]==1:
        print("This is the start value of my wanted values")
        print(previous)
        print(item)
        print(nxt)

输出:

This is the start value of my wanted values
(0,)
(1,)
(1,)
This is the start value of my wanted values
(0,)
(1,)
(1,)
This is the start value of my wanted values
(0,)
(1,)
(1,)

有人可以帮我改变这个循环,让它返回预期的结果吗?

标签: pythonpython-3.xfor-loop

解决方案


my_result = []
is_zero = None
for o in ov:
    if o[0]==1:
        my_result.append(o[0])
        is_zero = False
    elif o[0]==0 and is_zero == False:
        my_result.append(o[0])
        is_zero=True
print(my_result)

推荐阅读