--- 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])) ``` :::