Latest web development tutorials

Структура данных python3

Эта глава в основном в сочетании со знаниями мы узнали ранее ввести структуры данных Python.


список

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

Вот список Python:

способ описание
list.append (х) Чтобы добавить элемент в конец списка, что эквивалентно [Len (а):] = [х].
list.extend (L) Добавляя все элементы указанного списка, чтобы развернуть список, эквивалент [LEN (а):] = L.
list.insert (я, х) Вставьте элемент в указанном месте. Первый параметр должен быть вставлен в свой индекс перед элементами, такими как a.insert (0, х) будет вставлен перед весь список, но a.insert (LEN (а), х) эквивалентно a.append ( х).
list.remove (х) Удаляет первый элемент из списка, значение которого равно х. Если нет такого элемента, то он вернет ошибку.
list.pop ([я]) Удалить элементы из указанной позиции в этом списке, и вернуть его. Если вы не указали индекс, a.pop () возвращает последний элемент. Элемент был немедленно удален из списка. (Метод квадратных скобок вокруг I указывает на то, что параметр является необязательным, не то, что вы должны ввести квадратные скобки, вы часто будете видеть эту запись в Python Library Reference.)
list.clear () Удалить все элементы в списке, равный дель в [:].
list.index (х) Возвращает индекс списка со значением х в первом элементе. Если соответствующий элемент не будет возвращать ошибку.
list.count (х) Возвращает число х раз появляется в списке.
list.sort () Из элементов в списке, подлежащих сортировке.
list.reverse () Перевернутые элементы в списке.
list.copy () Возвращает неполную копию списка равна [:].

Следующий пример иллюстрирует, большинство из списка методов:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]

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


Использование списка в качестве стека

Метод составления списка списков могут быть легко использованы в качестве стека, стек в качестве конкретной структуры данных, первый для ввода последней элемент, который будет выпущен (LIFO). Используйте метод добавления () может добавить элемент в верхней части стека. Без явного индекса популярности () метод может извлечь элемент из верхней части стека. Например:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

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

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

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
'Eric'
>>> queue.popleft()                 # The second to arrive now leaves
'John'
>>> queue                           # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

описаний списков

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

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

Здесь мы будем перечислять каждое число на три, чтобы получить новый список:

>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]

Теперь мы играем маленькие хитрости:

>>> [[x, x**2] for x in vec]
[[2, 4], [4, 16], [6, 36]]

Здесь мы вызываем метод индивидуально для каждого элемента в последовательности:

>>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']

Мы можем использовать, если условие в качестве фильтра:

>>> [3*x for x in vec if x > 3]
[12, 18]
>>> [3*x for x in vec if x < 2]
[]

Вот некоторые демки на велосипедные прогулки и другие навыки:

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2]
[6, 5, -7, 8, 7, -5, 10, 9, -3]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]

Списков могут использовать сложные выражения или вложенные функции:

>>> [str(round(355/113, i)) for i in range(1, 6)]
['3.1', '3.14', '3.142', '3.1416', '3.14159']

Вложенный список понимание

списки Python также могут быть вложены.

В следующем примере показан список 3X4 матрицы:

>>> matrix = [
...     [1, 2, 3, 4],
...     [5, 6, 7, 8],
...     [9, 10, 11, 12],
... ]

В следующем примере перечислены 3x4 матрицы к списку преобразования 4x3:

>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

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

>>> transposed = []
>>> for i in range(4):
...     transposed.append([row[i] for row in matrix])
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Другой метод:

>>> transposed = []
>>> for i in range(4):
...     # the following 3 lines implement the nested listcomp
...     transposed_row = []
...     for row in matrix:
...         transposed_row.append(row[i])
...     transposed.append(transposed_row)
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

дель-заявление

Вы можете использовать оператор дель по индексу вместо значения, чтобы удалить элемент из списка. Это использование поп-музыки () возвращает другое значение. Вы можете использовать оператор дель удалить вырезанные из списка, или очистить весь список (наш предыдущий метод представления присваивается сокращение на пустой список). Например:

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]

Можно также удалить переменную экземпляра с дель:

>>> del a

Кортежи и последовательности

Кортеж количество значений, разделенных запятыми состоит, например:

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))

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


Установить

Коллекция представляет собой неупорядоченный набор уникальных элементов. Основные функции включают в себя тестирование и устранение повторяющихся элементов.

Вы можете создать набор фигурные скобки ({}). Примечание: Если вы хотите создать пустой набор, вы должны использовать множество () вместо {}, который создает пустой словарь, в следующем разделе мы представим эту структуру данных.

Ниже приводится простая демонстрация:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 删除重复的
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # 检测成员
True
>>> 'crabgrass' in basket
False

>>> # 以下演示了两个集合的操作
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a 中唯一的字母
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 在 a 中的字母,但不在 b 中
{'r', 'd', 'b'}
>>> a | b                              # 在 a 或 b 中的字母
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 在 a 和 b 中都有的字母
{'a', 'c'}
>>> a ^ b                              # 在 a 或 b 中的字母,但不同时在 a 和 b 中
{'r', 'd', 'b', 'm', 'z', 'l'}

Коллекция также поддерживает вывод формулы:

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

словарь

Другой полезный тип данных, встроенный в Python является словарь.

Непрерывная последовательность целого индекса, и эта разница, ключевое слово словаря индексируются ключевые слова могут быть любого неизменяемого типа, как правило, со строкой или числовым.

Лучший способ понять это в качестве словаря являются неупорядоченные пары ключ => значение. В том же словаре, ключи должны быть отличны друг от друга.

Пара скобок создает пустой словарь: {}.

Это простой пример использования словаря:

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> list(tel.keys())
['irv', 'guido', 'jack']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False

Конструктор DICT () для создания словаря непосредственно из списка ключ-кортежа. Если у вас есть фиксированный шаблон, списочные указать конкретный пар ключ-значение:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

Кроме того, словарь может быть использован для создания выражения, чтобы получить какой-либо словарь ключей и значений:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

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

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}

методы Traversal

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

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

При перемещении в последовательности, индекс позиции и соответствующее значение может быть использовано Перечислим () функция также получить:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

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

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

Для перемещения в обратной последовательности, сначала укажите последовательность, а затем вызвать reversesd () функции:

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

Обходе последовательность в соответствии с порядком, использование отсортированного функции () возвращает отсортированный последовательность, не изменяет исходное значение:

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

Обратитесь к документации