Причина, по которой ind_num1
и ind_num2
, по-видимому, не влияют на index1
и index2
, заключается в том, что вы увеличиваете первые две переменные в цикле, но вы присвоили значения index1
и index2
вне петли. Следовательно, index1
и index2
всегда будут оставаться 0
и 2
соответственно. Если вы хотите, чтобы index1
и index2
точно отражали значения ind_num1
и ind_num2
, вам необходимо обновлять значения index1
и index2
внутри цикла с каждой итерацией цикла.
inp = [1, 2, 3, 2, 8, 7, 6, 9, 5]
def check(n):
count = 0
ind_num1 = 0
ind_num2 = 2
for i in n[1:-1]:
index1 = n[ind_num1]
index2 = n[ind_num2]
if i > index1 and i > index2:
count += 1
ind_num1 += 1
ind_num2 += 1
return count
print(check(inp))
Если вы также хотите сравнить первый элемент в списке с последним и вторым элементом, а последний элемент в списке - со второго по последний элемент и первый элемент, онбудет так же просто, как ...
inp = [1, 2, 3, 2, 8, 7, 6, 9, 5]
def check(n):
count = 0
for e,i in enumerate(inp):
follIndex = e+1 if e+1 < len(n) else 0 # Changes index of following item to 0 if comparing last item in the list.
if i > inp[e-1] and i > inp[follIndex]:
count += 1
return count
print(check(inp)) # Returns and prints '3' because three values (3, 8, 9)
# are bigger than both of the adjacent values in the list.
Вы можете отслеживать текущий индекс, перечисляя список, при этом значение e
является целым числом, которое всегда представляет индекс текущего элемента.
Цель отслеживания текущего индекса, или e
, заключается в том, чтобы вы могли легко получить доступ к смежным элементам списка через inp[e-1]
и inp[e+1]
.
Это позволяет вам избавиться отиз множества ненужных переменных.
Поскольку вы не хотите сравнивать первый или последний элементы, вы должны сделать следующее:
inp = [1, 2, 3, 2, 8, 7, 6, 9, 5]
def check(n):
count = 0
for e,i in enumerate(n[1:-1]):
if i > n[e] and i > n[e+2]:
count += 1
return count
print(check(inp))
Вы используете enumerate
дляопределить количество итераций (т. е. 0
, 1
, ... 6
) как e
. Это значение (например, e
) используется для определения соседних элементов списка (например, n[e] and n[e+2]
), что позволяет избавиться от всех этих ненужных переменных. FWIW, i
по существу равно e+1
.