我有两个问题?
我需要检查一个[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']
答案 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]]
您可以使用zip
和enumerate
来实现相同目标。
对于第二部分,您可以使用
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']