Конструктор списков: Как это работает в следующем коде? - PullRequest
0 голосов
/ 09 января 2019
thislist = list(("apple", "banana", "cherry"))
thislist = ["apple", "banana", "cherry"]

В пересчете на

  • Список классов
  • Объект списка
  • Конструктор списка

Я хотел бы понять, как именно работает вышеуказанный код, и создать список.

Ответы [ 3 ]

0 голосов
/ 09 января 2019

list - это встроенный класс в Python. Существует три основных способа построения списка.

Первый способ - вызвать «конструктор» или list.__call__, обычно с list(...). Конструктор принимает любую итерацию и инициализирует список, который ссылается на все его элементы. В первом примере вы передаете tuple строк ("apple", "banana", "cherry"). Результатом присвоения является то, что новый объект списка связан с именем thislist.

Второй способ заключается в заключении коллекции в запятую в квадратных скобках. Результатом thislist = ["apple", "banana", "cherry"] является то, что новый объект списка, равный объекту в первом примере, связан с именем thislist. Эта нотация возможна, потому что тип list является настолько неотъемлемой частью языка Python, что интерпретатор распознает этот синтаксис. Другими примерами таких же фундаментальных типов структур данных являются set (инициализируется {'a', 'b', 'c'}), dict (инициализируется {'a': 1, 'b': 2, 'c': 3}) и tuple (инициализируется ('a', 'b', 'c')).

Третий способ составления списка - через понимание. Это своего рода гибрид первых двух способов, поскольку он позволяет вам использовать итеративную, а не буквальную последовательность в квадратных скобках. Примером понимания списка будет что-то вроде:

thislist = [x for x in ("apple", "banana", "cherry")]

Как правило, понимание работает путем создания пустого списка и добавления элементов выражения генератора в скобках. Это примерно эквивалентно

thislist = []  # or thislist = list()
for x in ("apple", "banana", "cherry"):
    thislist.append(x)
0 голосов
/ 09 января 2019

list и tuple оба встроены в классы Python.

Давайте сначала поговорим о Lists

Списки являются последовательностями и используются для хранения коллекций однородных предметов.

Конструктор списка:

list([iterable])

Вы можете создать список несколькими способами:

  • С парой квадратных скобок, которые обозначают пустой список. Например: []
  • С квадратными скобками и элементами, разделенными запятыми. Например: [a, b, c]
  • С помощью понимания списка. Например: [x for x in iterable]
  • С помощью конструктора типов. Например: list() или list(iterable)

Конструктор list(iterable) создает список, элементы которого совпадают и в том же порядке, что и элементы итерируемого.

Здесь iterable может быть либо последовательностью, либо объектом, поддерживающим итерацию, либо объектом итератора.

Если iterable уже является списком: Возвращается копия списка

Например:

>>> list('abc') 
['a', 'b', 'c'] 
>>> list( (1, 2, 3) ) # Next let's understand what a tuple is
[1, 2, 3]

Теперь поговорим о Tuples

Кортежи - это последовательности, которые используются для хранения коллекций разнородных данных.

Конструктор кортежей:

tuple([iterable])

Вы можете создавать кортежи разными способами:

  • С парой скобок для обозначения пустого кортежа. Например: ()
  • Со многими пунктами, разделенными запятыми. Например: (a, b, c)
  • С запятой в конце для одиночного кортежа. Например: a, или (a,)
  • С помощью tuple() конструктор. Например: tuple() или tuple(iterable)

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

Если iterable уже является кортежем, его копия будет возвращена. Например:

>>> tuple('abc') 
('a', 'b', 'c') 
>>> tuple( [1, 2, 3] ) 
(1, 2, 3)
>>> tuple
()
>>> t = 1,2,3
>>> t
(1, 2, 3)

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

Взяв ваш вопрос в качестве примера:

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

thislist = list(("apple", "banana", "cherry"))

Здесь ("apple", "banana", "cherry") создаст кортеж неявно. Затем этот кортеж ("apple", "banana", "cherry") является входом iterable для конструктора list и возвращает объект списка.

>>> type(("apple", "banana", "cherry"))
<class 'tuple'>

Когда вы предоставляете ["apple", "banana", "cherry"], объект списка создается неявно и возвращается.

>>> type(["apple", "banana", "cherry"])
<class 'list'>
0 голосов
/ 09 января 2019

Список - это встроенный итератор Python:

Это вызовет новый пустой список:

this_list = list () -> this_list теперь объект списка

Это создаст новый список, инициализированный из элементов итерируемого

this_list = list (iterable) -> Список 'this_list' создается с помощью конструктора списка

Например:

this_tuple = ("яблоко", "банан", "вишня")

Чтобы преобразовать этот кортеж в список, можно использовать:

>>> this_list = list(this_tuple)

>>> this_list

["apple", "banana", "cherry"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...