Программирование | Отладка | Web-технологии | Microsoft Office | Теор.информатика | Рсслед-Рµ операций | Операц. СЃРёСЃ-РјС‹ | Новости |
Проектирование РРЎ | РСЃСЃРє. РёРЅС‚-С‚ | Трансляторы | РћР± авторах | Карта сайта | РџРѕРёСЃРє |
Язык программирования Turbo Pascal |
Среда программирования Delphi 6 |
Язык программирования C++ |
Язык программирования C# |
Язык программирования Assembler |
Язык программирования Go |
Язык программирования Haskell |
Язык программирования Java |
Язык программирования Kotlin |
Язык программирования LISP |
Язык программирования Prolog |
Язык программирования Python |
Параллельные алгоритмы |
Сети Петри |
Начала |
Отладчик Turbo Debugger |
РћСЃРЅРѕРІС‹ HTML |
Технология Flash |
Язык программирования Perl |
Основы языка PHP |
РћСЃРЅРѕРІС‹ PhotoShop |
РћСЃРЅРѕРІС‹ JavaScript |
РћСЃРЅРѕРІС‹ CSS |
РћСЃРЅРѕРІС‹ CorelDRAW |
Библиотека jQuery |
Текстовый процессор Microsoft Word |
Рлектронные таблицы Microsoft Excel |
Система управления базами данных Microsoft Access |
Рспользование VBA РІ Microsoft Excel |
Место информатики в системе наук |
Общие сведения об информации |
Кодирование информации в теории Шеннона |
Основные понятия теории алгоритмов |
Классические формализации понятия 'алгоритм' |
Понятие рекурсии |
Сложность алгоритма |
Методы разработки алгоритмов |
Сложность задачи |
Рнформационное моделирование |
Основные понятия теории графов |
Алгоритмы поиска на графах |
Матроиды. 'Жадные' алгоритмы |
Динамическое программирование |
Алгоритмы |
UNIX Рё Linux |
Унифицированный язык моделирования UML |
Введение в машинное обучение с использованием Python |
Основы создания нейросети на Python |
Глубокое обучение на Python |
Начала |
Динамические структуры данных |
Библиотека RX |
Основные классы и события Delphi |
Основные компоненты Delphi |
Организация потоков |
Технология COM |
Язык программирования Object Pascal |
Локальные БД в Delphi |
Библиотека OWL |
Библиотека Qt |
Библиотека STL |
Библиотека шаблонов классов Borland |
Основы компьютерной графики |
Динамические структуры данных |
Начала |
Обработка исключительных ситуаций |
Оптимизация с помощью ассемблера |
Основы объектно-ориентированного программирования |
Потоки ввода-вывода |
Разное |
Редактор Resource Workshop |
Среда Visual C++ |
Программирование в Microsoft Visual C++ 2010 |
Технология CUDA |
Технология OLE |
Начала |
16-битное программирование |
32-битное программирование |
Основы логического программирования |
Динамические структуры данных |
Visual Prolog |
Библиотека PyQt5 |
Библиотека Tkinter |
Визуализация данных |
Начала |
Задачи ComputerScience |
Рекурсия |
Вкладка RXControls |
Вкладка RXDBAware |
Вкладка RXTools |
Вкладка Standard |
Вкладка Additional |
Создание Internet-приложений |
Вкладка System |
Вкладка Win32 |
Вкладка Servers |
Технология ADO |
Вкладка QReport |
Вкладка InterBase |
Вкладка Dialogs |
Начала |
Среда программирования. Язык С/С++ |
На этом шаге мы рассмотрим основные операции над списками.
Обращение к элементам списка осуществляется с помощью квадратных скобок, в которых указывается индекс элемента. Нумерация элементов списка начинается с нуля. Выведем все элементы списка:
>>> arr = [1, "str", 3.2, "4"] >>> arr[0], arr[1], arr[2], arr[3] (1, 'str', 3.2, '4')
С помощью позиционного присваивания можно присвоить значения элементов списка каким-либо переменным. Количество элементов справа и слева от оператора = должно совпадать, иначе будет выведено сообщение об ошибке:
>>> х, y, z = [1, 2, 3] # Позиционное присваивание >>> х, y, z (1, 2, 3) >>> х, y = [1, 2, 3] # Количество элементов должно совпадать Traceback (most recent call last): File "<pyshell#86>", line 1, in <module> x, y = [1, 2, 3] # Количество элементов должно совпадать ValueError: too many values to unpack (expected 2)
В Python 3 при позиционном присваивании перед одной из переменных слева от оператора = можно указать звездочку. В этой переменной будет сохраняться список, состоящий из "лишних" элементов. Если таких элементов нет, то список будет пустым:
>>> х, у, *z = [1, 2, 3]; х, у, z (1, 2, [3]) >>> х, у, *z = [1, 2, 3, 4, 5]; х, у, z (1, 2, [3, 4, 5]) >>> х, у, *z = [1, 2]; х, у, z (1, 2, [ ]) >>> *х, у, z = [1, 2]; х, у, z ([], 1, 2) >>> х, *у, z = [1, 2, 3, 4, 5]; х, у, z (1, [2, 3, 4], 5) >>> *z, = [1, 2, 3, 4, 5]; z [1, 2, 3, 4, 5]
Так как нумерация элементов списка начинается с 0, индекс последнего элемента будет на единицу меньше количества элементов. Получить количество элементов списка позволяет функция len():
>>> arr = [1, 2, 3, 4, 5] >>> len(arr) # Получаем количество элементов 5 >>> arr[len(arr) - 1] # Получаем последний элемент 5
Если элемент, соответствующий указанному индексу, отсутствует в списке, то возбуждается исключение IndexError:
>>> arr = [1, 2, 3, 4, 5] >>> arr[5] # Обращение к несуществующему элементу Traceback (most recent call last) : File "<pyshell#99>", line 1, in <module> arr[5] # Обращение к несуществуоцему элементу IndexError: list index out of range
В качестве индекса можно указать отрицательное значение. В этом случае смещение будет отсчитываться от конца списка, а точнее - чтобы получить положительный индекс, значение вычитается из общего количества элементов списка:
>>> arr = [1, 2, 3, 4, 5] >>> arr[-1], arr[len(arr) -1] # Обращение к последнему элементу (5, 5)
Так как списки относятся к изменяемым типам данных, то мы можем изменить элемент по индексу:
>>> arr = [1, 2, 3, 4, 5] >>> arr[0] = 600 # Изменение элемента по индексу >>> arr [600, 2, 3, 4, 5]
Кроме того, списки поддерживают операцию извлечения среза, которая возвращает указанный фрагмент списка. Формат операции:
[<Начало>:<Конец>:<Шаг>]
Все параметры не являются обязательными. Если параметр <Начало> не указан, то используется значение 0. Если параметр <Конец> не указан, то возвращается фрагмент до конца списка. Следует также заметить, что элемент с индексом, указанном в этом параметре, не входит в возвращаемый фрагмент. Если параметр <Шаг> не указан, то используется значение 1. В качестве значения параметров можно указать отрицательные значения.
Теперь рассмотрим несколько примеров. Сначала получим поверхностную копию списка:
>>> аrr = [1, 2, 3, 4, 5] >>> m = arr[:]; m # Создаем поверхностную копию к выводим значения [1, 2, 3, 4, 5] >>> m is arr # Оператор is показывает, что это разные объекты False
Теперь выведем символы в обратном порядке:
>>> аrr = [1, 2, 3, 4, 5] >>> arr[: :-1] # Шаг -1 [5, 4, 3, 2, 1]
Выведем список без первого и последнего элементов:
>>> arr [1:] # Без первого элемента [2, 3, 4, 5] >>> arr [:-1] # Без последнего элемента [1, 2, 3, 4]
Получим первые два элемента списка:
>>> arr[0:2] # Символ с индексом 2 не входит в диапазон [1, 2]
А теперь получим последний элемент:
>>> arr[-1:] # Последний элемент списка [5]
И, наконец, выведем фрагмент от второго элемента до четвертого включительно:
>>> arr [1:4] # Возвращаются элементы с индексами 1, 2 и 3 [2, 3, 4]
С помощью среза можно изменить фрагмент списка. Если срезу присвоить пустой список, то элементы, попавшие в срез, будут удалены:
>>> arr = [1, 2, 3, 4, 5] >>> arr[1:3] = [6, 7] # Изменяем значения элементов с индексами 1 и 2 >>> arr [1, 6, 7, 4, 5] >>> arr [1:3] = [ ] # Удаляем элементы с индексами 1 и 2 >>> arr [1, 4, 5]
Соединить два списка в один список позволяет оператор +. Результатом объединения будет новый список:
>>> arr1 = [1, 2, 3, 4, 5]
>>> arr2 = [6, 7, 8, 9]
>>> arr3 = arr1 + arr2
>>> arr3
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Вместо оператора + можно использовать оператор +=. Следует учитывать, что в этом случае элементы добавляются в текущий список:
>>> arr = [1, 2, 3, 4, 5]
>>> arr += [6, 7, 8, 9]
>>> arr
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Кроме рассмотренных операций, списки поддерживают операцию повторения и проверку на вхождение. Повторить список указанное количество раз можно с помощью оператора *, а выполнить проверку на вхождение элемента в список позволяет оператор in:
>>> [1, 2, 3] * 3 # Операция повторения [1, 2, 3, 1, 2, 3, 1, 2, 3] >>>2 in [1, 2, 3, 4, 5], 6 in [1, 2, 3, 4, 5] # Проверка на вхождение (True, False)
На следующем шаге мы рассмотрим многомерные списки.