объединение списков Python с использованием функции добавления

#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. Согласитесь, это было просто для того, чтобы указать, хотите ли вы выполнять какие-либо операции с диапазоном, тогда нам сначала нужно преобразовать его в список.