[英]How do I take the nth element of a list and compare to the last nth elements of the same list
这就是我想做的。
我有一个包含 10 个数字的列表(顺序很重要):
ten_numbers = [4504, 4405, 4302, 4706, 4332, 4656, 3045, 1056, 4556, 4032]
我想取第 10 个数字,在本例中为 4032,我想将它与最后 9 个数字进行比较,并测量它是否在第 10 个数字的 +100(4132) -100(3932) 范围内。
在这种情况下,如果最后 9 个数字介于 3932 和 4132 之间,我想将其视为成功。
成功是在范围内,失败是在范围之外。
我想计算它在 3932-4132 内的次数。
这应该足以回答这个问题。 您应该注意到 ten_numbers 是一个列表。
ten_numbers = [4504, 4405, 4302, 4706, 4332, 4656, 3045, 1056, 4556, 4032]
Answer= [abs(ten_numbers[-1]-ten_numbers[i])<100 for i in range(len(ten_numbers)-1)]
print(sum(Answer))
sum(Answer) 将计算它们。
这只是一个简单的列表理解(我更改了第二个值只是为了使一个错误):
ten_numbers = [4504, 4025, 4302, 4706, 4332, 4656, 3045, 1056, 4556, 4032]
[abs(el - ten_numbers[-1]) > 100 for el in ten_numbers[:-1]]
# [True, False, True, True, True, True, True, True, True]
给定一个布尔数组,您可以将其传递给sum()
以获取计数:
answer = [abs(el - ten_numbers[-1]) > 100 for el in ten_numbers[:-1]]
sum(answer)
# 8
您也可以将测试拉出到它自己的 function 中。 这可能更具可读性和灵活性:
ten_numbers = [4504, 4025, 4302, 4706, 4332, 4656, 3045, 1056, 4556, 4032]
is_different = lambda x: abs(x - ten_numbers[-1]) > 100
list(map(is_different, ten_numbers[:-1]))
# same result
不确定您的最后 9 个数字是什么:1-9 或 2-10。 如果是 2-10,那么:
ten_numbers = [4504, 4405, 4302, 4706, 4332, 4656, 3045, 1056, 4556, 4032]
max_dev = 100
last = ten_numbers[-1]
results = []
for i in ten_numbers[-9:]:
results.append(abs(i - last) < max_dev )
print (results)
这将打印出与您最后一个数字的所有差异。
ten_numbers = [4504, 4405, 4302, 4706, 4332, 4656, 3045, 1056, 4556, 4032]
last_number=ten_numbers[-1]
print(last_number) #check to see if it is the last number i.e 4032
for num in range(0,len(ten_numbers)):
diff=ten_numbers[num]-last_number
print(diff)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.