Python 3 Списки Методы Tutorial. Вывести Удалить элемент списка. List Index Sort

Содержание страницы

Python 3 Списки Методы Tutorial

python.ivan-shamaev.ru

Основная структура данных в Python — это последовательность

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

В Python есть шесть встроенных типов последовательностей, но наиболее распространенными являются списки и кортежи, которые мы увидим в этом учебнике (python 3 tutorial).

Есть ряд методов, которые применимы ко всем типам последовательностей. Эти операции включают в себя:

  • indexing (индексацию),
  • slicing (срезы),
  • adding (накопление/добавление),
  • multiplying (умножение) и
  • checking for membership (проверку членства).

Кроме того, в Python есть встроенные функции для определения длины последовательности и для нахождения ее самых больших и самых маленьких элементов.

Списки Python

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

Создать список просто — необходимо поставить различные значения через запятую в квадратных скобках. Например:

list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"]

Подобно строковым индексам, индексы списков начинаются с 0. Списки могут быть нарезаны, объединены и т.д.

Доступ к значениям в списках

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

list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print("list1[0]: ", list1[0])
print("list2[1:5]: ", list2[1:5])

Когда приведенный выше код выполняется, он дает следующий результат —

list1[0]:  physics
list2[1:5]:  [2, 3, 4, 5]

Обновление списков

Вы можете обновить один или несколько элементов списков, предоставив срез в левой части оператора присваивания, а также добавить элементы в список с помощью метода append (). Например —

list = ['physics', 'chemistry', 1997, 2000];
print "Value available at index 2 : "
print list[2]
list[2] = 2001;
print "New value available at index 2 : "
print list[2]

Примечание. Метод append () обсуждается в следующем разделе.

Когда приведенный выше код выполняется, он дает следующий результат —

Value available at index 2 :
1997
New value available at index 2 :
2001

Удалить элементы списка

Чтобы удалить элемент списка, вы можете использовать либо оператор del, если вы точно знаете, какие элементы вы удаляете, либо метод remove (), если вы не знаете. Например —

list1 = ['physics', 'chemistry', 1997, 2000];
print list1
del list1[2];
print "After deleting value at index 2 : "
print list1

Когда приведенный выше код выполняется, он дает следующий результат —

['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :
['physics', 'chemistry', 2000]

Примечание. Метод remove () обсуждается в следующем разделе.

Основные операции со списком

Списки реагируют на операторы + и * так же, как строки; здесь они также означают конкатенацию и повторение, за исключением того, что результатом является новый список, а не строка.

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

Python Expression Результаты Описание
len([1, 2, 3]) 3 Length — длина
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] Concatenation — конкатенация
[‘Hi!’] * 4 [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] Repetition — Повторение
3 in [1, 2, 3] True Membership — членство
for x in [1, 2, 3]: print x, 1 2 3 Iteration — итерация

Индексирование, нарезка и матрицы

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

Предполагая следующий ввод —

L = ['spam', 'Spam', 'SPAM!']
Выражение Python Результаты Описание
L[2] SPAM! Смещения начинаются с нуля
L[-2] Spam Отрицательный: считать справа
L[1:] [‘Spam’, ‘SPAM!’] Нарезка выборок разделов

Встроенные функции и методы списка

Python включает в себя следующие функции списка —

Функция с описанием
1 cmp(list1, list2)

Сравнивает элементы обоих списков.

2 len(list)

Дает общую длину списка.

3 max(list)

Возвращает элемент из списка с максимальным значением.

4 min(list)

Возвращает элемент из списка с минимальным значением.

5 list(seq)

Преобразует кортеж в список.

Python включает следующие методы списка

Методы с описанием
1 list.append(obj)

Добавляет объект obj в список

2 list.count(obj)

Возвращает количество раз, сколько obj встречается в списке

3 list.extend(seq)

Добавляет содержимое seq в список

4 list.index(obj)

Возвращает самый низкий индекс в списке, который появляется obj

5 list.insert(index, obj)

Вставляет объект obj в список по индексу смещения

6 list.pop(obj=list[-1])

Удаляет и возвращает последний объект или объект из списка

7 list.remove(obj)

Удаляет объект obj из списка

8 list.reverse()

Переворачивает объекты списка на месте

9 list.sort([func])

Сортирует объекты списка, используйте функцию сравнения, если дано

Расширенные методы и методы списка Python

Одна из самых мощных структур данных в Python — это список.

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

В этой статье мы рассмотрим списки, zipметод и sortметод.

List Comprehensions

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

Вот шаблон для понимания списка:

newList = [returned_value  for item in list condition_logic ]

Как вытащить конкретные элементы

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

# Create a list of numbers from 0 - 49
numRange = range(0,50)

# Pull out all the numbers that are even
evenNums = [num for num in numRange if num % 2 == 0 ]

В приведенном выше примере, читая слева направо, мы создаем новый список, numкоторый возвращается из цикла for, где остаток ( %по модулю), numделенный на два, равен нулю.

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

Выполнить операцию над элементами

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

# Create a list of numbers from 0 - 49
numRange = range(0,50)

# Pull out all the numbers that are even
evenNums = [num * num for num in numRange]

Ограничение вызовов функций с помощью напоминания

Это один из особенно полезных фрагментов кода, который может спасти вас от более дорогих вызовов функций. Источником был этот пост на Stack Overflow.

Мемоизация — это процесс сохранения значений в памяти, так что нам не нужно пересчитывать результаты позже.

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

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

def memoize(f):
    """ Memoization decorator for functions taking one or more arguments. """
    class memodict(dict):
        def __init__(self, f):
            self.f = f
        def __call__(self, *args):
            return self[args]
        def __missing__(self, key):
            ret = self[key] = self.f(*key)
            return ret
    return memodict(f)

# Initialize global function call variable
funcRuns = 0

# Wrap function in memoization wrapper
@memoize
def f(x):
  global funcRuns

  # Increment funcRuns every time the function is run
  funcRuns += 1
  return True

# Initialize numbers list
nums = [0,1,2,3,4,4]

# Run the list comprehension with 2 calls to f(x) per iteration
#   with 6 elements in the list and 2 calls per iteration this would 
#   normally yield 12 fuction executions. 
[f(x) for x in nums if f(x)]

# Log number of f(x) runs
print(funcRuns)

Запустив приведенный выше пример, вы обнаружите, что функция запускается только пять раз, несмотря на то, что f(x)в понимании списка есть два вызова, а в списке шесть элементов.

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

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

Продвинутые методы списков

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

Zip(list, list2, …)

Метод zip используется для объединения нескольких списков в Python в кортежи. Если два списка не имеют одинаковую длину, то длинный из двух списков будет обрезан до длины более короткого.

first_names = ['John', 'Jeff', 'Chris']
last_names = ['Wick', 'Chen', 'Test', 'Truncated']
names = zip(first_names, last_names)
for name in names:
  print(name)
# Outputs: 
('John', 'Wick')
('Jeff', 'Chen')
('Chris', 'Test')

List.Sort(key=func, reversed=T/F)

Рассмотрим метод сортировки с использованием пользовательских функций ранжирования:

posts = [
  {
    'Post': {
      'title':'Other today post',
      'date': 43750,
      'claps': 200
    }
  }, 
  {
    'Post': {
      'title':'Python Like a Pro - Lists and Their Many Uses',
      'date': 43750,
      'claps': 525
    }
  },
  {
    'Post': {
      'title':'Yesterdays news',
      'date': 43749,
      'claps': 25
    }
  }, 
]

# Rank here returns a tuple of the days
#   since 1900 date and the number of claps
def rank(element):
  return (element['Post']['date'], 
          element['Post']['claps'])

# Sorting using our rank algorithm 
#   and reversed so the largest date
#   with the most claps is first
posts.sort(key=rank, reverse=True)

# Finally a list comprehension to tie it all together
print([post['Post']['title'] for post in posts])

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

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

https://towardsdatascience.com/python-basics-6-lists-and-list-manipulation-a56be62b1f95

18 наиболее распространенных вопросов по list Python

Узнайте, как создать список в Python, выбрать элементы списка, в чем заключается разницу между методами append() и extension(), зачем использовать NumPy и многое другое.

Вот список вопросов по Python, на которые Вы найдете ответы в этой статье:

  1. Когда использовать списки и когда использовать кортежи, словари или наборы?
  2. Как выбрать элемент из списка?
  3. Как преобразовать списки в другие структуры данных?
  4. Как определить размер вашего списка?
  5. В чем разница между методами Python append () и extend ()?
  6. Как объединить списки?
  7. Как отсортировать список?
  8. Как клонировать или скопировать список?
  9. Как работает понимание списков в Python?
  10. Как считать вхождения элемента списка в Python?
  11. Как разбить список на куски одинакового размера?
  12. Как перебрать список?
  13. Как создавать плоские списки из списков?
  14. Как получить пересечение двух списков?
  15. Как удалить дубликаты из списка?
  16. Почему NumPy вместо списков?
  17. Как создать пустые массивы NumPy?
  18. Как сделать математику с помощью списков?

Когда использовать списки и когда использовать кортежи, словари или наборы?

туду

Как выбрать элемент из списка?

туду

Как преобразовать списки в другие структуры данных?

туду

Как определить размер вашего списка?

туду

В чем разница между методами Python append () и extend ()?

туду

Как объединить списки?

туду

Как отсортировать список?

туду

Как клонировать или скопировать список?

туду

Как работает понимание списков в Python?

туду

Как считать вхождения элемента списка в Python?

туду

Как разбить список на куски одинакового размера?

туду

Как перебрать список?

туду

Как создавать плоские списки из списков?

туду

Как получить пересечение двух списков?

туду

Как удалить дубликаты из списка?

туду

Почему NumPy вместо списков?

туду

Как создать пустые массивы NumPy?

туду

Как сделать математику с помощью списков?

туду

4 4 голоса
Рейтинг статьи
Шамаев Иван
Разработчик аналитических решений QlikView/Qlik Sense/Power BI; Python Data Scientist; Разработчик интеграционных решений на PHP, Python, JavaScript.
1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x