Рубрики
Без рубрики

Списки Python объяснили: len, pop, index и список

Автор оригинала: FreeCodeCapm Team.

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

Базовое использование

Как создать список

Пустой Список Создан с помощью пара квадратных скобок:

>>> empty_list = []
>>> type(empty_list)

>>> len(empty_list)
0

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

>>> homogeneous_list = [1, 1, 2, 3, 5, 8]
>>> type(homogeneous_list)

>>> print(homogeneous_list)
[1, 1, 2, 3, 5, 8]
>>> len(homogeneous_list)
6
>>> heterogeneous_list = [1, "Hello Campers!"]
>>> print(heterogeneous_list)
[1, "Hello Campers!"]
>>> len(heterogeneous_list)
2

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

>>> empty_list = list()                            # Creates an empty list
>>> print(empty_list)
[]
>>> list_from_iterable = list("Hello campers!")    # Creates a list from an iterable.
>>> print(list_from_iterable)
['H', 'e', 'l', 'l', 'o', ' ', 'c', 'a', 'm', 'p', 'e', 'r', 's', '!']

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

Элементы доступа в списке

>>> my_list = [1, 2, 9, 16, 25]
>>> print(my_list)
[1, 2, 9, 16, 25]

Ноль индексирован

>>> my_list[0]
1
>>> my_list[1]
2
>>> my_list[2]
9

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

>>> my_list[-1]
25
>>> my_list[-2]
16

Распаковки списков для Python-3

>>> print(*my_list)
1 2 9 16 25

Списки измеряются

Списки являются смежными контейнерами. Союзные контейнеры – это контейнеры, которые позволяют изменениям, в которых объекты содержатся контейнер.

Элементы из Список может быть извлечен и повторно устроен с использованием другого Список как индекс.

>>> my_list = [1, 2, 9, 16, 25, 34, 53, 21]
>>> my_index = [5, 2, 0]
>>> my_new_list = [my_list[i] for i in my_index]
>>> print(my_new_list)
[34, 9, 1]

Список методов

Лен ()

Лен () Метод возвращает длину объекта, будь то список, строка, кортеж или словарь.

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

list1 = [123, 'xyz', 'zara'] # list
print(len(list1)) # prints 3 as there are 3 elements in the list1

str1 = 'basketball' # string
print(len(str1)) # prints 10 as the str1 is made of 10 characters

tuple1 = (2, 3, 4, 5) # tuple 
print(len(tuple1)) # prints 4 as there are 4 elements in the tuple1

dict1 = {'name': 'John', 'age': 4, 'score': 45} # dictionary
print(len(dict1)) # prints 3 as there are 3 key and value pairs in the dict1

индекс()

Индекс () Возвращает первое вхождение/индекс элемента в списке, заданном в качестве аргумента функции.

numbers = [1, 2, 2, 3, 9, 5, 6, 10]
words = ["I", "love", "Python", "I", "love"]

print(numbers.index(9)) # 4
print(numbers.index(2)) # 1
print(words.index("I")) # 0
print(words.index("am")) # returns a ValueError as 'am' is not in the `words` list

Здесь первый вывод очень очевиден, но второй и третий могут по-прежнему сбиты с толку. Но помните Индекс () Возвращает первый вхождение элемента и, следовательно, в этом случае 1 и 0 индексы, где 2 и "Я" происходят первыми в списках соответственно.

Кроме того, если элемент не найден в списке, A ValueError возвращается как в случае индексации «Я» В слова список.

Дополнительные аргументы

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

words = ["I", "am", "a", "I", "am", "Pythonista"]

print(words.index("am", 2, 5)) # 4

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

поп ()

POP () Способ удаляет и возвращает последний элемент из списка.

Существует дополнительный параметр, который является индексом элемента для удаления из списка. Если индекс не указан, POP () Удаляет и возвращает последний элемент в списке.

Если индекс передан POP () Метод не находится в диапазоне, он бросает IndexError: поп-индекс вне диапазона исключение.

cities = ['New York', 'Dallas', 'San Antonio', 'Houston', 'San Francisco'];

print "City popped is: ", cities.pop() # City popped is: San Francisco
print "City at index 2 is  : ", cities.pop(2) # City at index 2 is: San Antonio

Базовая функциональность стека

POP () Метод часто используется в сочетании с Добавить () Для реализации основных функций стека в приложении Python:

stack = []

for i in range(5):
    stack.append(i)

while len(stack):
    print(stack.pop())

Список понимания

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

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

# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]

# Empty list that will be populate with a loop
even_list = []

for number in some_list:
  if number % 2 == 0:
    even_list.append(number)

# even_list now equals [2, 8, 10]

Первый список создан с некоторыми номерами. Затем вы создаете пустой список, который удержит ваши результаты из цикла. В цикле вы проверяете, делится ли каждый номер на 2 и если вы добавляете его, то dash_list Отказ Это заняло 5 строк кода, не включая комментарии и белое пространство, которое не сильно в этом примере.

Теперь для примера понимания списка.

# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]

# List Comprehension
even_list = [number for number in some_list if number % 2 == 0]

# even_list now equals [2, 8, 10]

Другой пример с одинаковыми двумя шагами: следующее создаст список номеров, соответствующих номерам в my_starting_list умножены на 7.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]
my_new_list = []

for item in my_starting_list:
my_new_list.append(item * 7)

Когда этот код работает, конечное значение my_new_list это: [7, 14, 21, 28, 35, 42, 49, 56]

Разработчик, использующий понимание списка может достичь того же результата, используя следующее понимание списка, что приводит к тому же my_new_list Отказ

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]

my_new_list = [item * 7 for item in my_starting_list]

Простая формула для записи в списке понимание способа:

my_list = [{Работа с входом n} для n в {python tireable}]

Заменить {Работа с входом N} С тем, однако, вы хотите изменить элемент, возвращенный из передового. Приведенный выше пример использует N * 7 Но операция может быть такой же простой или сложной, по мере необходимости.

Заменить {python tireable} с любым повторным. Типы последовательности будут наиболее распространены. Список использовался в приведенном выше примере, но кортежи и диапазоны также являются распространенными.

Понимание списка Добавляет элемент из существующего списка в новый список, если некоторое условие выполнено. Это нет, но намного быстрее в большинстве случаев. В некоторых случаях понимание списка может помешать читаемости, поэтому разработчик должен взвесить их параметры при выборе использования понимания списка.

Примеры понимания списка с условными

Поток управления в виде списка может управляться с использованием условных условий. Например:

only_even_list = [i for i in range(13) if i%2==0]

Это эквивалентно следующему цикле:

only_even_list = list()
for i in range(13):
  if i%2 == 0:
    only_even_list.append(i)

Понимание списка также может содержать вложенные, если условия. Рассмотрим следующий цикл:

divisible = list()
for i in range(50):
  if i%2 == 0:
    if i%3 == 0:
      divisible.append(i)

Использование понимания списка это можно записать как:

divisible = [i for i in range(50) if i%2==0 if i%3==0]

Если иначе оператора также можно использовать вместе с пониманием списка.

list_1 = [i if i%2==0 else i*-1 for i in range(10)]

Больше информации:

  • Лучшие примеры кода Python