Функции списков Python

В предыдущей статье мы рассмотрели методы списков Python. В  этой статье мы рассмотрим основные функции для работы со списками в Python.

Функции агрегации

len(sequence)

Возвращает количество элементов (длину) объекта-контейнера.

Параметры:

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

Возвращаемое значение:

Количество элементов объекта.

Если вы не передадите аргумент или передадите неверный аргумент, то будет возбуждено исключение TypeError.

Примечание:

Вы можете в своих классах определять метод __len__(), значение из которого будет возвращено при вызове функции len().

Примеры:

Пример 1: Работа с  len().

testList = []
print(testList, 'length is', len(testList))

testList = [1, 2, 3]
print(testList, 'length is', len(testList))

testTuple = (1, 2, 3)
print(testTuple, 'length is', len(testTuple))

testRange = range(1, 10)
print('Length of', testRange, 'is', len(testRange))

Результат:

[] length is 0
[1, 2, 3] length is 3
(1, 2, 3) length is 3
Length of range(1, 10) is 9

 

Пример 2: Определение метода __len__() в классе.

class Session:
    def __init__(self, number = 0):
        self.number = number
    
    def __len__(self):
        return self.number


# длина по умолчанию равна 0
s1 = Session()
print(len(s1)) # 0

s2 = Session(6)
print(len(s2)) # 6

max()

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

Параметры:

  1. Для поиска наибольшего элемента итерируемого объекта:

max(iterable, *iterables, key, default)

iterable — итерируемый объект (список, кортеж, множество, словарь и т. д.).

*iterables — любое количество итерируемых объектов; может быть больше, чем один. Необязательный аргумент.

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

default — значение по умолчанию, которое возвращается, если итерируемый объект окажется пустым. Если итерируемый объект пуст и данный аргумент не указан, то возбуждается исключение ValueError. Необязательный аргумент.

  1. Для поиска наибольшего элемента среди нескольких позиционных аргументов:

max(arg1, arg2, *args, key)

arg1 — объект (число, строка и т. д.).

arg2 — объект (число, строка и т. д.).

*args — любое количество объектов. Необязательный аргумент.

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

Возвращаемое значение:

Наибольший элемент.

Примеры:

Пример 1: Получение наибольшего элемента списка.

number = [3, 2, 8, 5, 10, 6]
largest_number = max(number)

# Output: The largest number is: 10
print("The largest number is:", largest_number)

 

Пример 2: Получение наибольшего элемента списка строк.

languages = ["Python", "C Programming", "Java", "JavaScript"]
largest_string = max(languages)  # наибольший элемент (в алфавитном порядке)

# Output: The largest string is: Python
print("The largest string is:", largest_string)

min()

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

Параметры:

  1. Для поиска наименьшего элемента итерируемого объекта:

min(iterable, *iterables, key, default)

iterable — итерируемый объект (список, кортеж, множество, словарь и т. д.).

*iterables — любое количество итерируемых объектов; может быть больше, чем один. Необязательный аргумент.

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

default — значение по умолчанию, которое возвращается, если итерируемый объект окажется пустым. Если итерируемый объект пуст и данный аргумент не указан, то возбуждается исключение ValueError. Необязательный аргумент.

  1. Для поиска наименьшего элемента среди нескольких позиционных аргументов:

min(arg1, arg2, *args, key)

arg1 — объект (число, строка и т. д.).

arg2 — объект (число, строка и т. д.).

*args — любое количество объектов. Необязательный аргумент.

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

Возвращаемое значение:

Наименьший элемент.

Примеры:

Пример 1: Получение наименьшего элемента списка.

number = [3, 2, 8, 5, 10, 6]
smallest_number = min(number)

# Output: The smallest number is: 2
print("The smallest number is:", smallest_number)

 

Пример 2: Получение наименьшего элемента списка строк.

languages = ["Python", "C Programming", "Java", "JavaScript"]
smallest_string = min(languages)  # наименьший элемент (в алфавитном порядке)

# Output: The smallest string is: C Programming
print("The smallest string is:", smallest_string)

sum(iterable[, start])

Суммирует элементы итерируемого объекта и возвращает результат.

Параметры:

iterable — итерируемый объект (список, кортеж, словарь и т. д.). Элементы итерируемого объекта должны быть числами. Если итерируемый объект пуст, то функция вернёт начальное значение (start).

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

Возвращаемое значение:

Сумма элементов итерируемого объекта [с начальным значением (start)].

Примечание:

Если вам нужно найти сумму чисел с плавающей запятой с расширенной точностью, можно использовать math.fsum(iterable).

Для конкатенации последовательностей, содержащих строки, можно использовать  ''.join(sequence).

Для конкатенации нескольких последовательностей можно использовать itertools.chain().

Примеры:

numbers = [2.5, 3, 4, -5]

numbers_sum = sum(numbers)
print(numbers_sum) # 4.5

numbers_sum = sum(numbers, 10)
print(numbers_sum) # 14.5

empty_list = []
print(sum(empty_list))  # 0

Функции проверки элементов списка на выполнение условия

any(iterable)

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

Параметры:

iterable — итерируемый объект (список, строка, словарь, кортеж, множество и так далее).

Возвращаемое значение:

Возвращает булево значение:

  • True, если хотя бы один элемент итерируемого объекта является True.
  • False, если все элементы итерируемого объекта являются False или если итерируемый объект пуст.

Условие

Возвращаемое значение

Все значения равны True

True

Все значения равны False

False

Одно значение равно True (остальные — False)

True

Одно значение равно False (остальные — True)

True

Итерируемый объект пуст

False

Примеры:

l = [1, 3, 4, 0]
print(any(l))  # True

l = [0, False]
print(any(l))  # False

l = [0, False, 5]
print(any(l))  # True

l = []
print(any(l))  # False

all(iterable)

Проверяет, все ли элементы итерируемого объекта принимают значение True.

Параметры:

iterable — итерируемый объект (список, строка, словарь, кортеж, множество и так далее).

Возвращаемое значение:

Возвращает булево значение:

  • True, если все элементы итерируемого объекта являются True или если итерируемый объект пуст.
  • False, если хотя бы один элемент итерируемого объекта является False.

Условие

Возвращаемое значение

Все значения равны True

True

Все значения равны False

False

Одно значение равно True (остальные — False)

False

Одно значение равно False (остальные — True)

False

Итерируемый объект пуст

True

Примеры:

l = [1, 3, 4, 5]
print(all(l))  # True

l = [0, False]
print(all(l))  # False

l = [1, 3, 4, 0]
print(all(l))  # False

l = [0, False, 5]
print(all(l))  # False

l = []
print(all(l))  # True

Функции преобразования типов

bool([value])

Преобразует значение к булевому типу (True или False), используя стандартную процедуру проверки истинности.

Параметры:

value — значение, которое надо преобразовать.

Возвращаемое значение:

Возвращает булево значение:

  • False, если переданное значение является False или опущено.
  • True, если переданное значение является True.

Следующие значения считаются False в Python:

  • None
  • False
  • Ноль любого числового типа. Например, 0, 0.0, 0j.
  • Пустая последовательность. Например, (), [], «».
  • Пустое отображение (mapping). Например, {}.
  • Объекты классов, которые имеют метод __bool __() или __len__(), возвращающие 0 или False.

Все остальные значения считаются истинными (True).

Примеры:

test = []
print(test,'is',bool(test)) # [] is False

test = [0]
print(test,'is',bool(test)) # [0] is True

test = 0.0
print(test,'is',bool(test)) # 0.0 is False

test = None
print(test,'is',bool(test)) # None is False

test = True
print(test,'is',bool(test)) # True is True

test = 'Easy string'
print(test,'is',bool(test)) # Easy string is True

list([iterable])

Возвращает список. 

Параметры:

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

Возвращаемое значение:

Список.

  • Если аргументы не были переданы, то возвращается пустой список.
  • Если в качестве аргумента был передан итерируемый объект, то создается список, состоящий из элементов итерируемого объекта.

Примеры:

Пример 1: Создание списков из строки, кортежа и списка.

# пустой список
print(list()) # []

# строка
vowel_string = 'aeiou' 

# ['a', 'e', 'i', 'o', 'u']
print(list(vowel_string))

# кортеж
vowel_tuple = ('a', 'e', 'i', 'o', 'u') 

# ['a', 'e', 'i', 'o', 'u']
print(list(vowel_tuple)) 

# список
vowel_list = ['a', 'e', 'i', 'o', 'u'] 

# ['a', 'e', 'i', 'o', 'u']
print(list(vowel_list))

 

Пример 2: Создание списков из множества и словаря.

# множество
vowel_set = {'a', 'e', 'i', 'o', 'u'}

# ['i', 'u', 'a', 'o', 'e']
print(list(vowel_set))

# В случае словарей ключи словаря будут элементами списка. 
vowel_dictionary = {'a': 1, 'e': 2, 'i': 3, 'o':4, 'u':5}

# ['a', 'e', 'i', 'o', 'u']
print(list(vowel_dictionary))

Прохождение по списку

enumerate(iterable [, start])

Возвращает генератор, отдающий пары счётчик(индекс)-элемент для указанного итерируемого объекта.

Параметры:

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

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

Возвращаемое значение:

enumerate object — генератор, отдающий пары счётчик(индекс)-элемент для указанного итерируемого объекта.

Примечание:

Вы можете преобразовать enumerate object в список или кортеж, используя функции list() и tuple() соответственно.

Примеры:

Пример 1: Работа с  enumerate().

grocery = ['bread', 'milk', 'butter']
enumerateGrocery = enumerate(grocery)

# <class 'enumerate'>
print(type(enumerateGrocery))

# [(0, 'bread'), (1, 'milk'), (2, 'butter')]
print(list(enumerateGrocery))

enumerateGrocery = enumerate(grocery, 10)

# [(10, 'bread'), (11, 'milk'), (12, 'butter')]
print(list(enumerateGrocery))

 

Пример 2: Прохождение по enumerate object.

grocery = ['bread', 'milk', 'butter']

for item in enumerate(grocery):
    print(item)

print('\n')
for count, item in enumerate(grocery):
    print(count, item)

print('\n')
# изменение значения start
for count, item in enumerate(grocery, 100):
    print(count, item)

Результат:
(0, ‘bread’)
(1, ‘milk’)
(2, ‘butter’)

0 bread
1 milk
2 butter

100 bread
101 milk
102 butter

Группировка элементов нескольких списков

zip(*iterables)

Возвращает итератор по кортежам, где i-й кортеж содержит i-й элемент из каждого переданного итерируемого объекта.

Параметры:

iterables — итерируемые объекты.

Возвращаемое значение:

Итератор по кортежам на основе переданных итерируемых объектов.

  • Если был передан один итерируемый объект, то будет возвращен итератор по кортежам, каждый из которых имеет только один элемент.
  • Если итерируемые объекты не были переданы, то будет возвращен пустой итератор.

Примечание:

Итератор останавливается, когда самая короткая из последовательностей исчерпана:

list(zip([1, 2, 4], [4, 5], [5, 7]))   # [(1, 4, 5), (2, 5, 7)]

Если у вас последовательности разной длины и потеря данных недопустима, используйте itertools.zip_longest().

В сочетании с оператором * функция zip() может быть использована для распаковки списка (см. Пример 2).

Примеры:

Пример 1: Использование zip().

number_list = [1, 2, 3]
str_list = ['one', 'two', 'three']

# Без аргументов
result = zip()

# Преобразование итератора в список
result_list = list(result)
print(result_list)

# С двумя итерируемыми объектами
result = zip(number_list, str_list)

# Преобразование итератора во множество
result_set = set(result)
print(result_set)

Результат:

[]

{(3, ‘three’), (2, ‘two’), (1, ‘one’)}

 

Пример 2: Распаковка списка с использованием zip().

coordinate = ['x', 'y', 'z']
value = [3, 4, 5]

result = zip(coordinate, value)
result_list = list(result)
print(result_list)

c, v =  zip(*result_list)
print('c =', c)
print('v =', v)

Результат:

[(‘x’, 3), (‘y’, 4), (‘z’, 5)]

c = (‘x’, ‘y’, ‘z’)

v = (3, 4, 5)