с помощью функции 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']