Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Индексирование и срезы последовательностей




Оператор индексирования s[n] возвращает n-й объект в последовательности, где s[0] соответствует первому объекту. Для извлечения элементов, начиная с конца последовательности, допускается использовать отрицательные индексы. Например, выражение s[-1] вернет последний элемент. При попытке обратиться по индексу, выходящему за пределы последовательности, будет возбуждено исключение IndexError.

Оператор среза s[i:j] или s[i:j:step] позволяет извлекать фрагменты последовательности в диапазоне индексов от i до j, при необходимости указывается шаг step.

Если опустить начальный и/или конечный индекс, вместо них будут использованы значения начального и конечного индекса оригинальной последовательности соответственно. Отрицательные индексы отсчитываются относительно конца последовательности (-1 – это последний элемент, -2 – предпоследний и т.д.). При выходе индексов i и/или j за пределы последовательности в качестве их значений будут использованы значения начального и конечного индексов оригинальной последовательности соответственно (для среза).

Шаг step также может быть отрицательным числом.

Например:

a=list(range(0,8,1))

print (a[4:1:-1])

print (a[1:4:1])

Результат:

[4, 3, 2]

[1, 2, 3]

В Python принято,  что элемент с первым индексом, i, входит в результат, а со вторым, j, - нет. Общее количество извлечённых элементов равно j-i (если точно, то целая часть от (j-i)/step).

Операторы in и not in проверяют присутствие объекта x в последовательности s. Они могут применяться для строк. Например, выражение’ hello’ in ‘hello world’ вернет значение True.

Функция sum(s) возвращает сумму всех элементов в последовательности s, но обычно может применяться только к последовательностям числовых значений. Дополнительно эта функция может принимать необязательное начальное значение. Обычно тип этого значения определяет тип результата. Например, вызов sum(items, decimal.Decimal(0)) вернет в результате объект типа Decimal.

Строки и кортежи являются неизменяемыми объектами и не могут изменяться после их создания. Списки могут изменяться с помощью следующих операторов:

Операция Описание
s[i] = x  Присваивание элементу с указанным индексом
s[i:j] = r Присваивание срезу последовательности r
s[i:j:step] = r Расширенная операция присваивания срезу
del s[i] Удаление элемента
del s[i:j] Удаление среза
del s[i:j:step] Расширенная операция удаления среза

Последовательности могут сравниваться с помощью операторов <, >, <=, >=, == и!=. В этом случае сравниваются первые элементы двух последовательностей. Если они равны, сравниванию подвергаются вторые элементы последовательностей.

Функции и методы списков

list.append(x) Добавляет элемент в конец списка

list.extend(L) Расширяет список list, добавляя в конец все элементы списка L

list.insert(i, x) Вставляет на i-ый элемент значение x

list.remove(x) Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует

list.pop([i]) Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент

list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)

list.count(x) Возвращает количество элементов со значением x

list.sort([key=функция]) Сортирует список на основе функции

list.reverse() Разворачивает список

list.copy() Поверхностная копия списка

list.clear() Очищает список

 

L.append (x) Добавляет элемент х в конец списка L
L.count(x) Возвращает число вхождений элемента х в список L
L.extend(m) L += m Добавляет в конец списка L все элементы итерируемого объекта m; оператор += делает то же самое
L.index(x, start, end) Возвращает индекс самого первого (слева) вхождения элемента х в список L (или в срез start: end списка L), в противном случае возбуждает исключение ValueError
L.insert(i, x) Вставляет элемент х в список L на позицию i
L.pop() Удаляет самый последний элемент из списка L и возвращает его в качестве результата
L.pop(i) Удаляет из списка L элемент с индексом i и возвращает его в качестве результата
L.remove(x) Удаляет самый первый (слева) найденный элемент х из списка L или возбуждает исключение ValueError, если элемент х не будет найден
L.reverse() Переставляет в памяти элементы списка в обратном порядке
L.sort(...) Сортирует список в памяти. Этот метод принимает те же необязательные аргументы key и reverse, что и встроенная функция sorted()

 

Удалить элемент с номером i можно с помощью среза:

L=L[:i]+L[i+1:]

 

Генераторы списков

Структура генератора списков:

<Список>=[<выражение> for <переменная> in <итератор> if <условие>]

Заданное выражение вычисляется для каждого значения переменной, которая последовательно принимает значения итератора. Необязательный параметр <условие> оставляет только те элементы, для которых условие истинно.

Пример:

L = [math.sin(у/100) for у in range(0, 100)]

Генераторы списков идеальны для выбора или удаления элементов списков по заданному условию, например:

L2=[x for x in L1 if not (30<x<70)]

Генераторы списков чудесным образом практически всегда выполняются значительно быстрее циклов. Также они записываются лаконичнее, хотя и выглядят несколько нестандартно. Поэтому можно рекомендовать заменять циклы на генераторы списков там, где это возможно.

 

Тип-диапазон

range(n1,n2,s) – задаёт арифметическую прогрессию от n1 до n2 с шагом 2. Особенностью типа является то, что элементы последовательности не хранятся в памяти. Хранится только первый, последний элемент, шаг и номер активного элемента.

 





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 775 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Самообман может довести до саморазрушения. © Неизвестно
==> читать все изречения...

2535 - | 2391 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.