繁体   English   中英

如何获取列表的第 n 个元素并与同一列表的最后 n 个元素进行比较

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM