>>> words = ['a', 'deer', 'a' 'female', 'deer']
>>> 'deer' in words
True
Если вы часто проверяете наличие элемента в списке и вас не волнует порядок элементов,··то для хранения и поиска уникальных значений гораздо лучше подойдет множество. О множествах мы поговорим чуть позже в этой главе.
Определяем количество включений значения с помощью функции count()
Чтобы определить, сколько раз какое-либо значение встречается в списке, используйте функцию count():
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> marxes.count('Harpo')
1
>>> marxes.count('Bob')
0
>>> snl_skit = ['cheeseburger', 'cheeseburger', 'cheeseburger']
>>> snl_skit.count('cheeseburger')
3
Преобразование списка в строку с помощью функции join()
В подразделе «Объединяем строки с помощью функции join()» раздела «Строки» главы 2 функция join() рассматривается более подробно, но взгляните еще на один пример того, что можно сделать с ее помощью:
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> ', '.join(marxes)
'Groucho, Chico, Harpo'
Но погодите, вам может показаться, что нужно делать все наоборот. Функция join() предназначается для строк, а не для списков. Вы не можете написать marxes.join(', '), несмотря на то что интуитивно это кажется правильным. Аргументом для функции join() является эта строка или любая итерабельная последовательность строк, включая список, и она возвращает строку. Если бы функция join() была только методом списка, вы не смогли бы использовать ее для других итерабельных объектов вроде кортежей и строк. Если вы хотите, чтобы она работала с любым итерабельным типом, нужно написать особый код для каждого типа, чтобы обработать объединение. Будет полезно запомнить: join() противоположна split(), как показано здесь:
>>> friends = ['Harry', 'Hermione', 'Ron']
>>> separator = ' * '
>>> joined = separator.join(friends)
>>> joined
'Harry * Hermione * Ron'
>>> separated = joined.split(separator)
>>> separated
['Harry', 'Hermione', 'Ron']
>>> separated == friends
True
Меняем порядок элементов с помощью функции sort()
Вам часто нужно будет изменять порядок элементов по их значениям, а не по смещениям. Для этого Python предоставляет две функции:
• функцию списка sort(), которая сортирует сам список;
• общую функцию sorted(), которая возвращает отсортированную копию списка.
Если элементы списка являются числами, они по умолчанию сортируются по возрастанию. Если они являются строками, то сортируются в алфавитном порядке:
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> sorted_marxes = sorted(marxes)
>>> sorted_marxes
['Chico', 'Groucho', 'Harpo']
sorted_marxes — это копия, ее создание не изменило оригинальный список:
>>> marxes
['Groucho', 'Chico', 'Harpo']
Но вызов функции списка sort() для marxes изменит этот список:
>>> marxes.sort()
>>> marxes
['Chico', 'Groucho', 'Harpo']
Если все элементы вашего списка одного типа (в списке marxes находятся только строки), функция sort() отработает корректно. Иногда можно даже смешать типы — например, целые числа и числа с плавающей точкой, — поскольку в рамках выражений они конвертируются автоматически:
>>> numbers = [2, 1, 4.0, 3]
>>> numbers.sort()
>>> numbers
[1, 2, 3, 4.0]
По умолчанию список сортируется по возрастанию, но вы можете добавить аргумент reverse=True, чтобы отсортировать список по убыванию:
>>> numbers = [2, 1, 4.0, 3]
>>> numbers.sort(reverse=True)
>>> numbers
[4.0, 3, 2, 1]
Получение длины списка с помощью функции len()
Функция len() возвращает количество элементов списка:
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> len(marxes)
3
Присваивание с помощью оператора =, копирование с помощью функции copy()
Если вы присваиваете один список более чем одной переменной, изменение списка в одном месте повлечет за собой его изменение в остальных, как показано далее:
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> b = a
>>> b
[1, 2, 3]
>>> a[0] = 'surprise'
>>> a
['surprise', 2, 3]