Массивы и словари питон

Основы Python — кратко. Часть 3. Списки, кортежи, файлы.

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

В общем, те кому не интересно — читают следующую новость, а остальных — прошу пройти .

Python для начинающих. Глава третья. «List, tuple, etc.»

Кортежи.
Кортежи (англ. tuple) используется для представления неизменяемой последовательности разнородных объектов. Они обычно записываются в круглых скобках, но если неоднозначности не возникает, то скобки можно опустить.

>>> t = (2, 2.05, "Hello") >>> t (2, 2.0499999999999998, 'Hello') >>> (a, b, c) = t >>> print a, b, c 2 2.05 Hello >>> z, y, x = t >>> print z, y, x 2 2.05 Hello >>> a=1 >>> b=2 >>> a,b=b,a >>> print a,b 2 1 >>> x = 12, >>> x (12,)

Как видно из примера, кортеж может быть использован и в левой части оператора присваивания. Значения из кортежа в левой части оператора присваивания связываются с аналогичными элементами правой части. Этот факт как раз и дает нам такие замечательные возможности как массовая инициализация переменных и возврат множества значений из функции одновременно. Последний пример демонстрирует создание кортежа из одного элмента (его часто называют синглтоном).

В Пайтоне отсутствуют массивы в традиционном понимании этого термина. Вместо них для хранения однородных (и не только) объектов используются списки. Они задаются тремя способами.

>>> a = [2, 2.25, "Python"] >>> a [2, 2.25, 'Python']

Создание с помощью списковых включений. В данном случае мы берем кубы всех нечетных чисел от 0 до 19. Этому синтаксису я планирую посвятить отдельное занятие.

>>> c = [x ** 3 for x in range(20) if x%2==1] >>> c [1, 27, 125, 343, 729, 1331, 2197, 3375, 4913, 6859]

Для работы со списками определен ряд операторов и функций:
len(s) Длина последовательности s
x in s Проверка принадлежности элемента последовательности. В новых версиях Python можно проверять принадлежность подстроки строке. Возвращает True или False
x not in s = not x in s
s + s1 Конкатенация последовательностей
s*n или n*s Последовательность из n раз повторенной s. Если n < 0, возвращается пустая последовательность.
s[i] Возвращает i-й элемент s или len(s)+i-й, если i < 0
s[i:j:d] Срез из последовательности s от i до j с шагом d будет рассматриваться ниже
min(s) Наименьший элемент s
max(s) Наибольший элемент s
s[i] = x i-й элемент списка s заменяется на x
s[i:j:d] = t Срез от i до j (с шагом d) заменяется на (список) t
del s[i:j:d] Удаление элементов среза из последовательности

Кроме того, для списков определен ряд методов.
append(x) Добавляет элемент в конец последовательности
count(x) Считает количество элементов, равных x
extend(s) Добавляет к концу последовательности последовательность s
index(x) Возвращает наименьшее i, такое, что s[i] == x. Возбуждает исключение ValueError, если x не найден в s
insert(i, x) Вставляет элемент x в i-й промежуток
pop(i) Возвращает i-й элемент, удаляя его из последовательности
reverse() Меняет порядок элементов s на обратный
sort([cmpfunc]) Сортирует элементы s. Может быть указана своя функция сравнения cmpfunc

Для преобразования кортежа в список есть функция list, для обратной операции — tuple.

Читайте также:  Java reflection create instance by name

Об индексировании списков и выделении подпоследовательностей следует еще раз упомянуть отдельно (этот механизм работает аналогично и для строк). Для получения элемента используются квадратные скобки, в которых находится индекс элемента. Элементы нумеруются с нуля. Отрицательное значение индекса указывает на элементы с конца. Первый с конца списка (строки) элемент имеет индекс -1.

>>> s = [0, 1, 2, 3, 4] >>> print s[0], s[-1], s[3] 0 4 3 >>> s[2] = -2 >>> print s [0, 1, -2, 3, 4] >>> del s[2] >>> print s [0, 1, 3, 4]

Сложнее обстоят дела со срезами. Для получения срезов последовательности в Пайтоне принято указывать не номера элементов, а номера «промежутков» между ними. Перед первым элементом последовательности промежуток имеет индекс 0, перед вторым – 1 и так далее. Отрицательные значения отсчитывают элементы с конца строки.
В общем виде срез записывается в следующем виде:
список[начало: конец: шаг]
По умолчанию начало среза равно 0, конец среза равен len(список), шаг равен 1. Если шаг не указывается, второй символ «:» можно опустить.
С помощью среза можно указать подмножество для вставки списка в другой список, даже при нулевой длине. Это удобно для вставки списка в строго определенной позиции.

>>> l = range(12) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] >>> l[1:3] [1, 2] >>> l[-1:] [11] >>> l[::2] [0, 2, 4, 6, 8, 10] >>> l[0:1]=[-1,-1,-1] >>> l [-1, -1, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] >>> del l[:3] >>> l [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

Словарь (хэш, предопределенный массив) – изменяемая структура данных, предназначенная для хранения элементов вида ключ: значение. Все легко показывается на примере.

>>> h1 = >>> h2 = >>> h3 = #Цикл по паре ключ-значение >>> for key, value in h1.items(): . print key, " ", value . 1 one 2 two 3 three #Цикл по ключам >>> for key in h2.keys(): . print key, " ", h2Массивы и словари питон . 0 zero 5 five #Цикл по значениям >>> for v in h3.values(): . print v . 2 3 1 #Добавление элементов из другого хеша >>> h1.update(h3) #Количество пар в хеше >>> len(h1) 6

Объекты этого типа предназначены для работы с внешними данными. Чаще всего данному объекту соответствует файл на диске, но это далеко не всегда так. Файловые объекты должны поддерживать основные методы: read(), write(), readline(), readlines(), seek(), tell(), close() и т.п.

Читайте также:  Java create class methods

Следующий пример показывает копирование файла:

f1 = open("file1.txt", "r") f2 = open("file2.txt", "w") for line in f1.readlines(): f2.write(line) f2.close() f1.close()

(этот пример можно записать массой других способов, многие из которых сильно отличаются по оптимальности, но это тоже тема отдельного разговора)

В принципе, большинству функций абсолютно безразлично, передан им объект типа файл, или любой другой объект с такими же методами. Так, приведенный выше пример можно очень легко модифицировать для скачивания файла из Интерне, заменив в нем первую строку на следующий код.

import urllib f1 = urllib.urlopen("http://python.onego.ru")

Задачи:
— Разработать программу «массовой закачки» URL-ов из файла urls.txt
— Разработать программу, скачивающую страницу по указанному URL со всем ее содержимым.
— Написать программу, которая получив на входе произвольный список удалит из него все повторяющиеся элементы.

Источник

Списки, кортежи и словари в Python

Python содержит важные типы данных, которыми вы с высокой вероятностью будете использовать каждый день. Они называются списки, кортежи и словари. Цель данной статьи познакомить вас с ними поближе. Они не очень сложные, так что надеюсь, вы научитесь, как использовать их по назначению. После освоения этих трех типов данных, в сочетании со строками из предыдущей статьи, вы ощутимо продвинетесь в изучении Python. Вам понадобится каждый из этих четырех кирпичиков для создания 99% приложений.

Списки

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

Как вы видите, вы можете создать список при помощи квадратных скобок, или при помощи встроенного инструмента Python – list. Список состоит из таких элементов, как строки, цифры, объекты и смеси типов. Давайте взглянем на несколько примеров:

Первый список содержит 3 числа, второй 3 строки, третий содержит смесь. Вы также можете создавать списки списков, вот так:

В какой-то момент вам может понадобиться скомбинировать два списка вместе. Первый способ сделать это – при помощи метода extend:

Немного проще будет просто добавить два списка вместе.

Да, это именно настолько просто. Вы также можете сортировать список. Давайте уделим немного времени и взглянем на то, как это делается:

Получилось. Видите? Давайте взглянем на еще один пример, чтобы закрепить результат:

В этом примере мы попытались назначить сортированный список переменной. Однако, когда вы вызываете метод sort() в списке, он сортирует список на месте. Так что если вы попробуете назначить результат другой переменной, тогда возникнет объект None, который аналогичен объекту Null в других языках. Таким образом, когда вам нужно отсортировать что-нибудь, просто помните, что вы сортируете на месте, и вы не можете назначить объект другой переменной.
Вы можете разрезать список также, как вы делаете это со строкой:

Данный код выдает список из трех первых элементов.

Читайте также:  Округлить число python numpy

Кортежи

Кортеж похож на список, но вы создаете его с круглыми скобками, вместо квадратных. Вы также можете использовать встроенный инструмент для создания кортежей. Разница в том, что кортеж неизменный, в то время как список может меняться. Давайте взглянем на несколько примеров:

Данный код демонстрирует способ создания кортежа с пятью элементами. Также он говорит нам о том, что мы можете делать нарезку кортежей. Однако, вы не можете сортировать кортеж! Последние два примера показывают, как создавать кортеж при помощи ключевого слова tuple (которое и переводится как «кортеж»). Первый код просто создает пустой кортеж, в то время как во втором примере кортеж содержит три элемента. Обратите внимание на то, что в нем есть список. Это пример конвертации. Мы можем менять или конвертировать объект из одного типа данных в другой. В нашем случае, мы конвертируем список в кортеж. Если вы хотите превратить кортеж abc обратно в список, вы можете сделать это следующим образом:

Для повторения, данный код конвертирует кортеж в список при помощи функции list.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Словари

Словарь Python, по большей части, представляет собой хэш-таблицу. В некоторых языках, словари могут упоминаться как ассоциативная память, или ассоциативные массивы. Они индексируются при помощи ключей, которые могут быть любого неизменяемого типа. Например, строка или число могут быть ключом. Вам обязательно стоит запомнить тот факт, что словарь – это неупорядоченный набор пар ключ:значение, и ключи обязательно должны быть уникальными.

Покупка ботов Вконтакте на сервисе doctorsmm обойдется Вам от 179 рублей за 1000 добавленных страниц. Кроме того, Вы самостоятельно можете выбрать не только требуемое количество ресурса, но и скорость его поступления, чтобы максимально приблизить процесс к естественному приросту. Также на сайте действуют внушительные оптовые скидки. Торопитесь сделать заказ, время предложений может быть ограничено!

Вы можете получить список ключей путем вызова метода keys() в том или ином словаря. Чтобы проверить, присутствует ли ключ в словаре, вы можете использовать ключ in в Python. В некоторых старых версиях Python (с 2.3 и более ранних, если быть точным), вы увидите ключевое слово has_key, которое используется для проверки наличия ключа в словаре. Данный ключ является устаревшим в Python 2.X, и был удален, начиная с версии 3.Х. Давайте попробуем создать наш первый словарь:

Источник

Оцените статью