首页 > 解决方案 > 如何仅将列表中的数字与下一个数字(邻居)进行比较?

问题描述

我要做的就是将列表中的第一个数字与同一列表中的第二个数字进行比较,将第二个数字与第三个数字进行比较,依此类推。

输入:

lst = [1,2,3,2,1]

输出:

result = ["Lower", "Lower", "Higher", "Higher"]

(1低于2,2低于3,3高于2,2高于1)

这有点难看(列表理解会很棒),但我的方法是:

lst = [1,2,3,2,1]
result = []
x = 0

try:
    for i in range(len(lst)):
        if lst[x] > lst[x+1]:
            result.append("Higher")
            #print("Higher")
        else:
            result.append("Lower")
            #print("Lower")
        x = x+1
except IndexError:
    print(result)
    print("Out of range")

标签: pythonlistcomparelist-comprehension

解决方案


higher由于您的字符串lower基本上是布尔大于/小于的代理,因此您可以使用以下方法使其非常干净:

lst = [1,2,3,2,1]

vals = ['higher', 'lower']

[vals[m < n] for m, n in zip(lst, lst[1:])]
# ['lower', 'lower', 'higher', 'higher']

推荐阅读