从列表中查找增量值

时间:2015-09-08 06:49:46

标签: python

我有两个问题?

  • 我需要检查一个[0]是否大于[1],依此类推,直到[n]

  • 我需要检查[n]是否小于[n-1]等等,直到[0]

例如,列表中的值:

['0.00', '0.00', '0.00', '7.79', '-1.63', '-0.37', '-1.42', '-0.20', '0.16', '0.25']

2 个答案:

答案 0 :(得分:0)

x=['0.00', '0.00', '0.00', '7.79', '-1.63', '-0.37', '-1.42', '-0.20', '0.16', '0.25']
y=zip(x,x[1:])

print [(i,j) for i,j in enumerate(y) if j[0]>j[1]]

您可以使用zipenumerate来实现相同目标。

对于第二部分,您可以使用

x=['0.00', '0.00', '0.00', '7.79', '-1.63', '-0.37', '-1.42', '-0.20', '0.16', '0.25']
x=x[::-1]
y=zip(x,x[1:])

print [(i,j) for i,j in enumerate(y) if j[0]<j[1]]

答案 1 :(得分:0)

你可以尝试这样的事情:同时迭代

  • x[:-1]:没有最后一个元素的列表
  • x[1:]:没有第一个元素的列表

并比较这些值。请注意,对于相等性,您可以将列表元素作为字符串进行比较 - 但对于<>,您可能希望在比较之前将它们转换为float

x=['0.00', '0.00', '0.00', '7.79', '-1.63', 
   '-0.37', '-1.42', '-0.20', '0.16', '0.25']

for xj, xi in zip(x[:-1], x[1:]):

    if xj == xi:
        print '{} == {}'.format(xj, xi)
    elif float(xj) < float(xi):
        print '{} < {}'.format(xj, xi)
    else:
        print '{} > {}'.format(xj, xi)

输出:

0.00 == 0.00
0.00 == 0.00
0.00 < 7.79
7.79 > -1.63
-1.63 < -0.37
-0.37 > -1.42
-1.42 < -0.20
-0.20 < 0.16
0.16 < 0.25

<强>更新

在您的评论之后,它只是想要一个包含字符串的列表,告诉您元素是否增加。这应该有效:

def comp_str(xj, xi):
    if xj == xi:
        return 'equal'
    elif float(xj) < float(xi):
        return 'yes'
    else:
        return 'no'

compare = [ comp_str(xj, xi) for xj, xi in zip(x[:-1], x[1:]) ]
print compare

# -> ['equal', 'equal', 'yes', 'no', 'yes', 'no', 'yes', 'yes', 'yes']