#python #concatenation
#python #объединение
Вопрос:
Я только что осознал проблему, когда я пытаюсь использовать » » в ситуации объединения списков.
Например, я могу сделать:
print([[1] [5]* n for n in range(1, 4)])
>>> [[1, 5], [1, 5, 5], [1, 5, 5, 5]]
Но если я переключу последовательность функции добавления:
print([[5] * n for n in range(1, 4) [1]])
Я не получу:
>>> [[5, 1], [5, 5, 1], [5, 5, 5, 1]]
Вместо этого я получил:
TypeError: unsupported operand type(s) for : 'range' and 'list'
Есть ли способ заставить это работать?
Ответ №1:
Вы выполняете эту операцию:
range(1, 4) [1]
В данном случае это ничего не значит.
Вы должны сделать [1]
сразу после [5] * n
, как в:
print([[5]*n [1] for n in range(1, 4)])
Ответ №2:
Вам нужно было бы добавить его в список, которым вы манипулируете, а не в диапазон, который вы просматриваете. Кроме того, если вы либо выполняете сложение, либо умножение (здесь мы выполняем умножение, затем сложение), вам придется окружить первый оператор, поскольку Python упорядочивает операции в соответствии с приоритетом оператора:
print([[5] * n [1] for n in range(1, 4)])
Комментарии:
1. @Code_Control_jxie0755 Рад помочь, не забудьте принять его по истечении 10 минут 🙂
Ответ №3:
Это поможет, поскольку участники уже ответили
[[5] * n [1] for n in range(1, 4)]
Но в вашем решении тип диапазона (1, 4) будет , если вы хотите выполнить некоторые операции со списком, например, конкатенацию, тогда вам следует сделать следующее:
list(range(1, 4)) [1]
Комментарии:
1. спасибо, я не думаю, что
list(range(1, 4))
это имеет какое-либо отношение к этому.2. Согласитесь, это было просто для того, чтобы указать, хотите ли вы выполнять какие-либо операции с диапазоном, тогда нам сначала нужно преобразовать его в список.