Простой Python. Современный стиль программирования (Любанович) - страница 38

Определяем количество включений значения с помощью функции 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() отработает корректно. Иногда можно даже смешать типы — например, целые числа и числа с плавающей точкой, — поскольку в рамках выражений они конвертируются автоматически: