for循环中压缩列表的条件

时间:2018-09-16 19:49:07

标签: python list for-loop zip

我为我的问题准备了一个例子。 (顺便说一句,两个列表中的位数相等)。

lst = [10,20,30,40,30,20,70,10,20,10,20,30,40,50,60,70,80,60]
lst2 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]

sup = zip(lst,lst2)
res = [j for i, j, k in zip(sup, sup[1:], sup[2:]) if i < j and j > k and j >= 60.0]

print res

它应该找到那些值,但是没有找到。有什么想法吗?

[(70, 7) (80, 17)]

1 个答案:

答案 0 :(得分:1)

我不清楚您想从中得到什么。

您可以使用:

sup = list(zip(lst,lst2))

它将返回一个元组列表。

之后,您可以使用列表理解进行比较。

我相信你想要的是

res = [j for i, j, k in zip(sup, sup[1:], sup[2:]) if i < j and j > k and j[0] >= 60.0]

这返回了[(70,7),(80,17)]。

请注意,i,j和k是元组!这就是为什么我选择j [0]来检查它是否> = 60