Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 55

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

с помощью функции join()

В подразделе «Объединяем строки с помощью функции join()» раздела «Строки»

главы 2 функция join() рассматривается более подробно, но взгляните еще на один

пример того, что можно сделать с ее помощью:

>>> marxes = ['Groucho', 'Chico', 'Harpo']

>>> ', '.join(marxes)

'Groucho, Chico, Harpo'

Списки

79

Но погодите, вам может показаться, что нужно делать все наоборот. Функция 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']