gpt4 book ai didi

python - 有没有办法确定列表的元素是否与另一个列表(具有相同索引)的元素匹配?

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:23 25 4
gpt4 key购买 nike

我目前正在学习基于excel的数据分析类(class),但我想完成Python上的练习以提高我的熟练程度。我有一张关于每天是否有积雪的 excel 数据表(1=雪,0=无雪)。所以我决定阅读这个 excel 文件并将这些数字中的每一个附加到一个列表中,以便于使用。虽然我似乎无法弄清楚下一步该怎么做。我需要从第一个元素开始遍历列表;如果元素 = 1 且后续元素也 = 1,我希望将“T”附加到新列表(在任何其他情况下为“F”)。

示例:列表 = [1, 1, 0, 1, 0, 1, 1]

这会将“T”附加为新列表中的第一个元素,因为前两个元素 = 1。第二个和第三个元素为 1 和 0,因此应将“F”附加到列表中。这应该持续到最后。最后两个元素 = 1,因此应附加“T”。

有人知道怎么做吗?这是我的尝试,但它似乎只为每种情况返回“F”:

def trans1(snow):
cover1 = []
snow1 = snow
snow2 = snow[1:]
for num1 in snow1:
for num2 in snow2:
if num1 == 1 and num2 ==1:
trans01.append("T")
else:
trans01.append("F")
return cover1

干杯!

最佳答案

您可以zip() 列表本身在一个偏移处,并在列表理解中与类似的东西进行比较:

l = [1, 1, 0, 1, 0, 1, 1]

res = ['T' if a == b else 'F' for a, b in zip(l, l[1:])]
# res -> ['T', 'F', 'F', 'F', 'F', 'T']

如果您只对 bool 值而不是字符串感兴趣,它仍然更简单:

[a == b for a, b in zip(l, l[1:])]
# [True, False, False, False, False, True]

[根据评论编辑]

如果您只想测试两个 1,您可以将测试更改为使用 and 而不是 ==。例如:

l = [0, 1, 1, 0, 0, 0] 
res = ['T' if a and b else 'F' for a, b in zip(l, l[1:])]
# res -> ['F', 'T', 'F', 'F', 'F']

将为全零输入提供所有 F

关于python - 有没有办法确定列表的元素是否与另一个列表(具有相同索引)的元素匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59013749/

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