# Операции эквивалентны sequence * n # или n * sequence
sequence
- последовательность. Могут быть list
, str
, tuple
и т. д.,n
- целое число.Операция позволяет добавить последовательность sequence
к самой себе n
раз.
В результате произойдет добавление последовательности sequence
к себе n
раз. Иногда операцию называют как "повторить последовательность несколько раз".
Примечание 1: Диапазоны
range
не поддерживают добавления себя к самой себе, т. к. последовательности элементов в них следуют определенным шаблонам.Примечание 2: Изменяемое множество
set
не поддерживает операцию повторения в N раз, т.к. это неупорядоченная коллекция без повторяющихся элементов.
>>> x = 'Hello' >>> x * 5 # 'HelloHelloHelloHelloHello' >>> x = [0, 1, 2, 3, 4] >>> x * 3 # [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4] >>> x * 0 # [] >>> x * -5 # [] >>> x = [[0, 1, 2, 3, 4]] >>> x = x * 3 >>> x # [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]] >>> x[0][0] = 10 >>> x # [[10, 1, 2, 3, 4], [10, 1, 2, 3, 4], [10, 1, 2, 3, 4]]
Замечания к операции повторения последовательности:
Значения целого числа n
меньше 0
обрабатываются как 0
, что дает пустую последовательность того же типа, что и последовательность sequence
. Обратите внимание, что элементы последовательности sequence
не копируются. Вместо копирования, на элементы последовательности будут поставлены ссылки. Это часто удивляет новых программистов Python.
>>> lists = [[]] * 3 >>> lists # [[], [], []] >>> lists[0].append(3) >>> lists # [[3], [3], [3]]
Что здесь произошло? [[]]
является одноэлементным списком, содержащим пустой список, поэтому все три элемента [[]] * 3
являются ссылками на этот единственный пустой список. Изменение любого из элементов списков изменяет этот единственный список.
Вот таким образом можно создать список различных списков:
>>> lists = [[] for i in range(3)] >>> lists[0].append(3) >>> lists[1].append(5) >>> lists[2].append(7) >>> lists [[3], [5], [7]]