gpt4 book ai didi

python - 对列表的两个连续值执行任何操作

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:27 24 4
gpt4 key购买 nike

我有一个 list

truthList = [True,False,False,False,True,False,True,True]

我想“和”这个列表的两个后续索引。

output[0]=truthList[0] and truthList[1]
output[1]=truthList[2] and truthList[3]
....

“Anding”上面的列表将给出以下输出

output = [False,False,False,True]

有两种情况

1 List 只有偶数个索引

2 列表可以有偶数个或奇数个索引

有人可以为这两种情况建议一个简单的捷径吗(最好是通过列表理解或 map )

最佳答案

对于偶数奇数 长度列表,您可以使用itertools.izip_longest() list comprehesnion 表达式为:

>>> from itertools import izip_longest
>>> truthList = [True,False,False,False,True,False,True,True, False]

# jumping the list by 2 v
>>> [i and j for i, j in izip_longest(truthList[::2], truthList[1::2], fillvalue=False)]
# Does `and` with `False` as pair up for last entry in case of `odd` list ^
[False, False, False, True, False]

在这里,您需要根据您需要的行为将fillvalue 参数的值设置为True/False。作为document说:

If the iterables are of uneven length, missing values are filled-in with fillvalue.

对于奇数长度的列表,如果你想保留列表的最后一个值,那么你必须将fillvalue设置为truthList[-1]


对于 even 列表,zip将满足要求:

>>> truthList = [True,False,False,False,True,False,True,True]

>>> [i and j for i, j in zip(truthList[::2], truthList[1::2])]
[False, False, False, True]

关于python - 对列表的两个连续值执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com