- Как вывести все символы с четным индексом
- Упражнения
- A: Четные индексы
- Индексы и срезы в Python
- Индекс строки в Python
- Отрицательный индекс
- Срез строки в Python
- Индекс списка в Python
- Заменить элемент в списке
- Удалить элемент из списка
- Срез списка в Python
- Вывод четных элементов списка
- Итоги
- Комментарии ( 0 ):
- Как вывести все символы с четным индексом
- 2. Методы split и join
- 3. Генераторы списков
- 4. Срезы
Как вывести все символы с четным индексом
Со списками, так же как и со строками, можно делать срезы. А именно:
A[i:j] срез из j-i элементов A[i] , A[i+1] , . A[j-1] .
A[i:j:-1] срез из i-j элементов A[i] , A[i-1] , . A[j+1] (то есть меняется порядок элементов).
A[i:j:k] срез с шагом k : A[i] , A[i+k] , A[i+2*k] . . Если значение k i или j может отсутствовать, что означает «начало строки» или «конец строки»
Списки, в отличии от строк, являются изменяемыми объектами: можно отдельному элементу списка присвоить новое значение. Но можно менять и целиком срезы. Например:
Получится список, у которого вместо двух элементов среза A[2:4] вставлен новый список уже из трех элементов. Теперь список стал равен [1, 2, 7, 8, 9, 5] .
Получится список [40, 2, 30, 4, 20, 6, 10] . Здесь A[::-2] — это список из элементов A[-1] , A[-3] , A[-5] , A[-7] , которым присваиваются значения 10, 20, 30, 40 соответственно.
Если не непрерывному срезу (то есть срезу с шагом k , отличному от 1), присвоить новое значение, то количество элементов в старом и новом срезе обязательно должно совпадать, в противном случае произойдет ошибка ValueError .
Обратите внимание, A[i] — это элемент списка, а не срез!
Упражнения
Большинство упражнений этого листка копирует задачи предыдущего листка. Но в предыдущем листке задачи необходимо решать без использования срезов, дополнительных списков, методов списков.
В этом же листке, наоборот, нельзя использовать циклы. Используйте срезы и методы.
Для многих упражнений написано, какое наибольшее число строк может быть в программе. Как правило, ограничения будут или в одну строку, или в три строки.
Если программа решается в одну строку, то необходимо использовать функции внутри функций. Например, вот так можно вычислить сумму всех чисел, введенных в строку, используя стандартную функцию sum :
Обратите внимание, в однострочном решении нельзя сохранять список в переменной — нужно сразу же его обработать и вывести результат.
Решение в две строки, как правило, должно иметь следующий вид:
При этом зачастую не требуется преобразовывать элементы списка к типу int .
Решение в три строки, как правило, должно иметь следующий вид:
A: Четные индексы
Выведите все элементы списка с четными индексами
Источник
Индексы и срезы в Python
Строки и списки в Python состоят из элементов, занимающих свои нумерованные позиции в иерархии. К любому элементу, можно обратиться по его порядковому номеру — индексу. Отсчет начинается с нуля и ведется слева направо.
Индекс строки в Python
Строка представляет собой упорядоченный набор символов. Это значит, что каждый символ в строке занимает свое место — индекс. Например, у строки ‘string’, символ ‘s’ имеет индекс 0 и далее по порядку:
Первый по счету символ в строке всегда будет иметь индекс 0. Таким образом, обратившись по индексу к элементу, мы можем узнать его значение. В чем и состоит смысл индексов. У пробела, так же есть индекс.
Так мы получим всю строку целиком:
get_str = ‘это строка’
print(get_str)
это строка
А здесь, обратившись по индексу 5, получаем его значение — символ ‘t’.
get_s = ‘это строка’
print(get_s[5])
t
При обращении к несуществующему индексу, программа выведет ошибку.
get_s = ‘это строка’
print(get_s[10])
IndexError: string index out of range
Отрицательный индекс
Мы знаем точно, что у первого символа строки всегда будет индекс 0. А как насчет последнего символа? Ведь длина строки не всегда заранее известна. Для закрепления постоянного индекса для последнего символа, Python вводит понятие отрицательного индекса и предлагает вести отсчет наоборот, справа налево.
P y t h o n
-6 -5 -4 -3 -2 -1
get_last = ‘Python’
print(get_last[-1])
n
Срез строки в Python
Иногда требуется получить из строки не один символ, а сразу несколько по некоторой закономерности — первые 2, каждый 3-ий или 4 последних. Для этого существуют срезы. Мы выборочно срезаем нужные символы и обращаемся по срезу. Надо отметить, что физически срезанные символы, остаются на своих местах. Сама строка никоим образом не меняется, мы работаем со срезанными копиями.
Возьмем первые три символа у строки ‘срезы Python’. В параметрах передадим два индекса — начало и конец среза. При срезе первый индекс входит включительно, а второй индекс не входит в выборку.
slice = ‘срезы Python’
print(slice[0:3])
сре #символ ‘з’ не попал в выборку
Если не указаны начало или конец среза, то по умолчанию берётся первый или последний элемент коллекции.
slice = ‘срезы Python’
print(slice[6:])
Python #с индекса 6 и до конца
slice = ‘срезы Python’
print(slice[:5])
срезы #с начала строки до 5-го индекса включительно
slice = ‘срезы Python’
print(slice[:])
срезы Python #выводит строку целиком
Третьим параметром у срезов, может передаваться шаг.
slice = ‘срезы Python’
print(slice[::2])
сеыPto #выводит символы через один
Индекс списка в Python
Список — это упорядоченная коллекция нумерованных элементов, где первый элемент начинается с нулевой позиции. Когда мы обратимся к 4-ому элементу, то получим 12.
a = [2, 3, 5, 9, 12, 16]
print(a[4])
12
Правила для индексов у списка, похожие для индексов у строк:
- обращение к несуществующему элементу, выведет ошибку
- первый индекс равен 0, а последний индекс -1
Заменить элемент в списке
Существует принципиальная разница — элементы в списках в отличие от элементов в строках можно заменять, удалять или добавлять. Мы обращаемся по индексу в 3-му элементу в списке d и присваиваем индексу новое значение. В результате произошла замена — 7 поменялась на 10.
d = [1, 3, 5, 7, 8]
d[3] = 10
print(d)
[1, 3, 5, 10, 8]
Удалить элемент из списка
Элемент со значением 15 под индексом 2, вылетел из списка.
f = [11, 13, 15, 17]
del f[2]
print(f)
[11, 13, 17]
Срез списка в Python
Со срезами у списков дело обстоит точно так же, как и у строк. Делаем выборку со 2-го индекса по 4-ый, не включая сам 4-ый индекс.
b = [21, 32, 54, 90, 22, 46]
print(b[2:4])
[54, 90]
Вывод четных элементов списка
Выведем все четные элементы списка, используя срезы. Первым параметром передаем 1-ый индекс, во втором параметре пишем двоеточие (по умолчанию выведется последний элемент списка) и третьим параметром указываем шаг для выводимых элементов.
c = [21, 22, 23, 24, 25, 26, 27]
print(c[1::2])
[22, 24, 26]
Итоги
Ранее мы научились создавать строку, узнали, какие у строк есть методы. Сегодня вы научились по индексам и срезам находить значения. Но на этом, познания о строках не заканчиваются и все самое интересное, вас ждет впереди.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Источник
Как вывести все символы с четным индексом
Большинство программ работает не с отдельными переменными, а с набором переменных. Например, программа может обрабатывать информацию об учащихся класса, считывая список учащихся с клавиатуры или из файла, при этом изменение количества учащихся в классе не должно требовать модификации исходного кода программы.
Раньше мы сталкивались с задачей обработки элементов последовательности, например, вычисляя наибольший элемент последовательности. Но при этом мы не сохраняли всю последовательность в памяти компьютера. Однако, во многих задачах нужно именно сохранять всю последовательность, например, если бы нам требовалось вывести все элементы последовательности в возрастающем порядке (“отсортировать последовательность”).
Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:
В списке Primes — 6 элементов, а именно: Primes[0] == 2 , Primes[1] == 3 , Primes[2] == 5 , Primes[3] == 7 , Primes[4] == 11 , Primes[5] == 13 . Список Rainbow состоит из 7 элементов, каждый из которых является строкой.
Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len , например, len(Primes) == 6 .
В отличие от строк, элементы списка можно изменять, присваивая им новые значения.
Рассмотрим несколько способов создания и считывания списков. Прежде всего, можно создать пустой список (не содержащий элементов, длины 0), а в конец списка можно добавлять элементы при помощи метода append . Например, пусть программа получает на вход количество элементов в списке n , а потом n элементов списка по одному в отдельной строке. Вот пример входных данных в таком формате:
В этом примере создается пустой список, далее считывается количество элементов в списке, затем по одному считываются элементы списка и добавляются в его конец. То же самое можно записать, сэкономив переменную n :
Для списков целиком определены следующие операции: конкатенация списков (сложение списков, т. е. приписывание к одному списку другого) и повторение списков (умножение списка на число). Например:
В результате список c будет равен [1, 2, 3, 4, 5] , а список d будет равен [4, 5, 4, 5, 4, 5] . Это позволяет по-другому организовать процесс считывания списков: сначала считать размер списка и создать список из нужного числа элементов, затем организовать цикл по переменной i начиная с числа 0 и внутри цикла считывается i -й элемент списка:
Вывести элементы списка a можно одной инструкцией print(a) , при этом будут выведены квадратные скобки вокруг элементов списка и запятые между элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы списка в одну строку или по одному элементу в строке. Приведем два примера, также отличающиеся организацией цикла:
Здесь в цикле меняется индекс элемента i , затем выводится элемент списка с индексом i .
В этом примере элементы списка выводятся в одну строку, разделенные пробелом, при этом в цикле меняется не индекс элемента списка, а само значение переменной (например, в цикле for elem in [‘red’, ‘green’, ‘blue’] переменная elem будет последовательно принимать значения ‘red’ , ‘green’ , ‘blue’ .
Последовательностями в Питоне являются строки, списки, значения функции range() (это не списки), и ещё кое-какие другие объекты.
Приведем пример, демонстрирующий использование цикла for в ситуации, когда из строки надо выбрать все цифры и сложить их в массив как числа.
2. Методы split и join
Элементы списка могут вводиться по одному в строке, в этом случае строку целиком можно считать функцией input() . После этого можно использовать метод строки split() , возвращающий список строк, которые получатся, если исходную строку разрезать на части по пробелам. Пример:
Если при запуске этой программы ввести строку 1 2 3 , то список a будет равен [‘1’, ‘2’, ‘3’] . Обратите внимание, что список будет состоять из строк, а не из чисел. Если хочется получить список именно из чисел, то можно затем элементы списка по одному преобразовать в числа:
Используя специальную магию Питона — генераторы — то же самое можно сделать в одну строку:
Объяснение того, как работает этот код, будет дано в следующем разделе. Если нужно считать список действительных чисел, то нужно заменить тип int на тип float .
У метода split() есть необязательный параметр, который определяет, какая строка будет использоваться в качестве разделителя между элементами списка. Например, вызов метода split(‘.’) вернет список, полученный разрезанием исходной строки по символам ‘.’ :
В Питоне можно вывести список строк при помощи однострочной команды. Для этого используется метод строки join . У этого метода один параметр: список строк. В результате возвращается строка, полученная соединением элементов переданного списка в одну строку, при этом между элементами списка вставляется разделитель, равный той строке, к которой применяется метод. Мы знаем, что вы не поняли предыдущее предложение с первого раза. Поэтому смотрите примеры:
Если же список состоит из чисел, то придется использовать еще тёмную магию генераторов. Вывести элементы списка чисел, разделяя их пробелами, можно так:
Впрочем, если вы не любитель тёмной магии, то вы можете достичь того же эффекта, используя цикл for .
3. Генераторы списков
Для создания списка, заполненного одинаковыми элементами, можно использовать оператор повторения списка, например:
Для создания списков, заполненных по более сложным формулам можно использовать генераторы: выражения, позволяющие заполнить список некоторой формулой. Общий вид генератора следующий:
где переменная — идентификатор некоторой переменной, последовательность — последовательность значений, который принимает данная переменная (это может быть список, строка или объект, полученный при помощи функции range ), выражение — некоторое выражение, как правило, зависящее от использованной в генераторе переменной, которым будут заполнены элементы списка.
Вот несколько примеров использования генераторов.
Создать список, состоящий из n нулей можно и при помощи генератора:
Создать список, заполненный квадратами целых чисел можно так:
Если нужно заполнить список квадратами чисел от 1 до n , то можно изменить параметры функции range на range(1, n + 1) :
Вот так можно получить список, заполненный случайными числами от 1 до 9 (используя функцию randrange из модуля random ):
А в этом примере список будет состоять из строк, считанных со стандартного ввода: сначала нужно ввести число элементов списка (это значение будет использовано в качестве аргумента функции range ), потом — заданное количество строк:
4. Срезы
Со списками, так же как и со строками, можно делать срезы. А именно:
A[i:j] срез из j-i элементов A[i] , A[i+1] , . A[j-1] .
A[i:j:-1] срез из i-j элементов A[i] , A[i-1] , . A[j+1] (то есть меняется порядок элементов).
A[i:j:k] срез с шагом k : A[i] , A[i+k] , A[i+2*k] . . Если значение k i или j может отсутствовать, что означает “начало строки” или “конец строки”
Списки, в отличии от строк, являются изменяемыми объектами: можно отдельному элементу списка присвоить новое значение. Но можно менять и целиком срезы. Например:
Получится список, у которого вместо двух элементов среза A[2:4] вставлен новый список уже из трех элементов. Теперь список стал равен [1, 2, 7, 8, 9, 5] .
Получится список [40, 2, 30, 4, 20, 6, 10] . Здесь A[::-2] — это список из элементов A[-1] , A[-3] , A[-5] , A[-7] , которым присваиваются значения 10, 20, 30, 40 соответственно.
Если не непрерывному срезу (то есть срезу с шагом k , отличному от 1), присвоить новое значение, то количество элементов в старом и новом срезе обязательно должно совпадать, в противном случае произойдет ошибка ValueError .
Обратите внимание, A[i] — это элемент списка, а не срез!
Источник