Как мне взять n-й элемент списка и сравнить с последними n-ными элементами этого же списка? - PullRequest
0 голосов
/ 14 апреля 2020

Вот что я хочу сделать.

У меня есть список из 10 чисел (порядок имеет значение):

ten_numbers = [4504, 4405, 4302, 4706, 4332, 4656, 3045, 1056, 4556, 4032]

Я хочу взять 10-е число, в данном случае 4032 и я хочу сравнить его с последними 9 числами и измерить, находится ли он в пределах +100 (4132) -100 (3932) диапазона 10-го числа.

В этом случае, если последние 9 чисел попадают между 3932 и 4132, я хочу считать это успехом.

Успех - если он попадает в диапазон, сбой - если он падает вне этого.

Я хочу посчитать, сколько раз оно попадает в пределы 3932-4132.

Ответы [ 4 ]

2 голосов
/ 14 апреля 2020

Этого должно быть достаточно, чтобы ответить на это. Вы должны заметить, что 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 (Ответ) будет считать их.

1 голос
/ 14 апреля 2020

Это простое понимание списка (я изменил второе значение, чтобы сделать одно ложное):

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(), чтобы получить count:

answer = [abs(el - ten_numbers[-1]) > 100 for el in ten_numbers[:-1]]
sum(answer) 
# 8

Вы также можете выдвинуть тест в его собственную функцию. Это может быть немного более читабельно и гибко:

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
0 голосов
/ 14 апреля 2020

Это распечатает всю разницу с вашим последним номером.

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)

0 голосов
/ 14 апреля 2020

Не уверен, что ваши последние 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)
...