---
tags: Python Step
---
# Практика по теме 8. Списки и массивы
На сайте http://pythontutor.ru/lessons/lists/problems/even_indices/ решить все задачи к занятию *7. Списки*
Выслать *архив с решениями всех задач (файлы с расширением .py) и скриншотом с сайта*, на котором видно количество решенных задач и имя текущего пользователя.
## [Задача 1. Четные индексы](http://pythontutor.ru/lessons/lists/problems/even_indices/)
Выведите все элементы списка с четными индексами (то есть `A[0], A[2], A[4], ...`).
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
for element in a[::2]:
print(element, end=' ')
```
:::
## [Задача 2. Четные элементы](http://pythontutor.ru/lessons/lists/problems/even_elements/)
Выведите все четные элементы списка. При этом используйте цикл `for`, перебирающий <u>элементы списка</u>, а не их индексы!
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
for element in a:
if element % 2 == 0:
print(element, end=' ')
```
:::
## [Задача 3. Больше предыдущего](http://pythontutor.ru/lessons/lists/problems/increasing_neighbours/)
Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
for i in range(1, len(a)):
if a[i] > a[i-1]:
print(a[i], end=' ')
```
:::
## [Задача 4. Соседи одного знака](http://pythontutor.ru/lessons/lists/problems/same_sign_neighbours/)
Дан список чисел. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую пару.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
for i in range(len(a) - 1):
if a[i] * a [i+1] > 0:
print(a[i], a[i+1])
break
```
:::
## [Задача 5. Больше своих соседей](http://pythontutor.ru/lessons/lists/problems/more_than_neighbours/)
Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей, и выведите количество таких элементов. Крайние элементы списка никогда не учитываются, поскольку у них недостаточно соседей.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
count = 0
for i in range(1, len(a) - 1):
if a[i-1] < a[i] > a[i+1]:
count += 1
print(count)
```
:::
## [Задача 6. Наибольший элемент](http://pythontutor.ru/lessons/lists/problems/maximal_element/)
Дан список чисел. Выведите значение наибольшего элемента в списке, а затем индекс этого элемента в списке. Если наибольших элементов несколько, выведите индекс первого из них.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
print(max(a), a.index(max(a)))
```
:::
## [Задача 7. Шеренга](http://pythontutor.ru/lessons/lists/problems/lineup/)
Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.
Программа получает на вход невозрастающую последовательность натуральных чисел, означающих рост каждого человека в строю. После этого вводится число X – рост Пети. Все числа во входных данных натуральные и не превышают 200.
Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
height = int(input())
i = 0
while i < len(a) and height <= a[i]:
i += 1
else:
print(i + 1)
```
:::
## [Задача 8. Количество различных элементов](http://pythontutor.ru/lessons/lists/problems/num_distinct/)
Дан список, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
count = 0
for i in range(1, len(a)):
if a[i] > a[i-1]:
count += 1
print(count + 1)
```
:::
## [Задача 9. Переставить соседние](http://pythontutor.ru/lessons/lists/problems/swap_neighbours/)
Переставьте соседние элементы списка (`A[0]` c `A[1]`, `A[2]` c `A[3]` и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
for i in range(0, len(a) - 1, 2):
a[i], a[i+1] = a[i+1], a[i]
print(' '.join([str(i) for i in a]))
```
:::
## [Задача 10. Переставить min и max](http://pythontutor.ru/lessons/lists/problems/swap_min_and_max/)
В списке все элементы различны. Поменяйте местами минимальный и максимальный элемент этого списка.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
min_index = a.index(min(a))
max_index = a.index(max(a))
a[min_index], a[max_index] = a[max_index], a[min_index]
print(' '.join([str(i) for i in a]))
```
:::
## [Задача 11. Удалить элемент](http://pythontutor.ru/lessons/lists/problems/remove_element/)
Дан список из чисел и индекс элемента в списке `k`. Удалите из списка элемент с индексом `k`, сдвинув влево все элементы, стоящие правее элемента с индексом `k`.
Программа получает на вход список, затем число `k`. Программа сдвигает все элементы, а после этого удаляет последний элемент списка при помощи метода `pop()` без параметров.
Программа должна осуществлять сдвиг непосредственно в списке, а не делать это при выводе элементов. Также нельзя использовать дополнительный список. Также не следует использовать метод `pop(k)` с параметром.
:::spoiler Решение
``` python
a = [int(s) for s in input().split()]
k = int(input())
for i in range(k, len(a) - 1):
a[i] = a[i + 1]
a.pop()
print(' '.join([str(i) for i in a]))
```
:::