Списки Python

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

  • Вы можете сохранить список связанных данных в списке
  • Вы также можете хранить смешанные данные, как в примере 2.
  • Вы можете добавить практически любой тип данных в свой список, как в примере 3.

2 — Пример пустого списка

# list example 1
list_name = [] #empty list

2 — Пример списков строк и чисел str и int

list_of_numbers = [1,2,3,4,5,6,7] # int Lists
list_of_names = ['James', 'jane', 'Wills', 'Dave'] # str lists

3 — Пример списка различных типов

# different types 
 def addNums(x,y):
    return x + y
list_of_types = [1, 2,'names', True, False, None, addNums, {'name': 'Doud', 'age': '28'}, (10, 16), [10, 20]]

Манипуляции со списками

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

Доступ к элементам списка (индексация списка)

  • Доступ к элементам списка можно получить, используя их индексы
  • Списки имеют нулевой индекс (это означает, что вы должны начать отсчет с 0)
  • Первый элемент списка находится в индексе 0
  • Последний элемент списка находится в индексе индекс ( length of that list - 1 )

Допустим, у нас есть список имен

# list_index =   0       1       2        3
    names = ['James', 'Adam', 'Wills', 'Doud']
    print(names[0]) # James
    print(names[1]) # Adam
    print(names[2]) # Wills

Получение длины списка

Вы можете получить длину списка, используя встроенную функцию len() в python. Функция len([1,2,3,4]) принимает список в качестве аргумента и возвращает его длину.

# Getting the length of a List
nums = [1, 2, 3, 4, 5, 6, 'end']
print(len(numbers)) # 7
# getting the last index by subtracting the 1 from the length
print(nums[len(numbers) - 1]) # end

Отрицательное индексирование

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

  • Последний элемент в списке будет иметь индекс -1
  • Предпоследний будет иметь индекс -2 и
  • И список продолжается.
#Let's say we want to get the last item of the nums list
print(nums[-1]) # end
print(nums[-2]) # 6
print(nums[-3]) # 5

Нарезка списка

Нарезку можно использовать для вырезания некоторой части списка несколькими различными способами, используя квадратную скобку и столбец [<startIndex>:<endIndex>].

  • Первая часть столбца — это то место, где вы хотите, чтобы нарезка начиналась <startIndex>, а последняя часть — то, где вы хотите, чтобы она заканчивалась <endIndex>
  • Если вы оставите первую часть пустой и укажете вторую часть вот так [:3], она начнется с индекса 0 до индекса 3
  • Если вы оставите последнюю часть пустой, она будет выглядеть так: [2:] начинается с 2 до конца списка.
  • Не указав ничего, вы получите копию массива с 1-го по последний
# Let's say we have a list of numbers
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:7]) # [4, 5, 6, 7]
print(numbers[:3]) # [1, 2, 3]
print(numbers[:]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • Допустим, мы хотим получить последний 3 элемент списка чисел.
print(numbers[-3:]) # [8, 9, 10]

Многомерный список

Список может содержать другой список, давайте посмотрим пример этого

  • Допустим, у нас есть список, содержащий два списка.
  • Первый содержит число, а другой содержит строку
  • Получение номера 2 из списка номеров будет происходить так
listings = [[1,2,3], 'num1', 'num2', 'num3']
listings[0][1] # 2

Изменение элементов списка

  • Мы можем изменить любой элемент, используя его индекс
names = ['Sam', 'Wills', 'Dan']
names[-1] = 'John'
print(names) # ['Sam', 'Wills', 'John']
  • Мы также можем изменить пару элементов, используя трюк с нарезкой.
names[:2] = ['Jane', 'Maria']
    print(names) # ['Jane', 'Maria', 'John']
  • Может быть, я просто хочу удалить элементы из списка
names[:2] = []

Добавление в список

  • Допустим, у меня есть список [1,2,3,4] и еще один список [5,6,7,8].
num1 = [1,2,3,4]
num2 = [5,6,7,8]
print(num1 + num2) # [1,2,3,4,5,6,7,8]

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

Это функции, которые вы можете использовать в списке. Может быть, чтобы изменить список или манипулировать списком. len() является примером этого.

Добавление в список с list.append()

  • Это можно использовать для добавления элемента в конец списка
  • Эквивалентно a[len(a):] = [x].
names = ['Sam', 'Wills', 'Dan']
names.append('Ali')
print(names) # ['Sam', 'Wills', 'Dan', 'Ali']

Расширьте список с помощью list.extend()

  • Вы можете добавить больше элементов в список с помощью list.extend()
nums = [1,2,3,4,5]
nums.extend([6,7,8,9,0]) 
print(nums) #  [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

Добавить элемент в определенный индекс с помощью list.insert()

  • Вы можете вставить элемент в заданную позицию с помощью list.insert()
  • Метод вставки подтолкнет остальные элементы к следующим индексам.
  • insert() принимает два параметра: первый — это индекс, а второй — что вставлять.
sports = ['Foot Ball', 'Soccer', 'Tennis']
    sports.insert(0, 'Basket Ball')
    print(sports) # ['Basket Ball', 'Foot Ball', 'Soccer', 'Tennis']

Удалить элемент из списка с помощью list.remove()

  • Вы можете удалить элемент, передав его функции удаления
  • если элемент не существует, он вернет ValueError.
sports = ['Foot Ball', 'Soccer', 'Tennis']
 sports.remove('Soccer')
 print(sports) # ['Foot Ball', 'Tennis']

Удаление элемента с использованием индекса с list.pop(i)

  • Метод pop принимает индекс и удаляет элемент по этому конкретному индексу
  • Если индекс не передан, он удалит последний элемент в списке.
sports = ['Foot Ball', 'Soccer', 'Tennis']
sports.pop(0) 
print(sports) # ['Soccer', 'Tennis']

Очистка всех элементов списка с помощью list.clear()

  • Это очищает все элементы в списке
  • Эквивалентно del a[:]
  • Также эквивалентно a[:] = []
numbers = [1,2,3,4,5,6,7]
    print(numbers.clear()) # []

Получение индекса элемента с помощью list.index()

  • метод index принимает 3 аргумента
  • Первый аргумент - это элемент, который нужно искать
  • Во-вторых, с чего начать поиск
  • третье, где перестать искать
  • если передан только один аргумент, он вернет первый индекс элемента
numbers = [1,'a',3,4,'a',6,7, 'a', 8, 9]
   numbers.index('a') # 1
   numbers.index('a', 2, 6) # 4
   numbers.index('a', 6) # 7

Подсчитайте, сколько раз элемент появляется в списке с list.count()

numbers = [1,'a',3,4,'a',6,7, 'a', 8, 9]
    print(numbers.count('a')) # 3

Обращение элементов списка с помощью list.reverse()

  • При реверсе элементы слева перемещаются вправо и наоборот
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
nums.reverse()
print(nums) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Сортировка списка по алфавиту с помощью list.sort()

  • Этот метод принимает два необязательных параметра:
  • key='...' и reverse='...'
  • reverse= указывает направление сортировки по возрастанию или убыванию, принимает значение True или False
#Sorting random numbers 
    nums = [8, 7, 2, 4, 5, 10, 3, 1, 9, 6]
    nums.sort()
    print(nums) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    # with reverse=True
    random = [8, 7, 2, 4, 5, 10, 3, 1, 9, 6]
    random.sort(reverse=True)
    print(random) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
  • Параметр key='...' особенно полезен, когда вы имеете дело со списком типов данных, таких как строки, dictionary, set или tuple.
  • Давайте посмотрим на пример этого.
# sorting by length of a string
    nums = ['james', 'jim', 'sam', 'jimmy']
    nums.sort(key=len)
    print(nums) # ['jim', 'sam', 'james', 'jimmy']

    # Sorting tuples list but only the second item in the tuple
    # step i define a func
    coordinates = [(2, 4), (3, 2), (4, 1), (9, 0)]
    def secondItem(val):
        return secondItem[1]
    coordinates.sort(key=secondItem)
    print(coordinates) # [(9, 0), (4, 1), (3, 2), (2, 4)]