Python: Добавление списка другими списками

#python #list #append

Вопрос:

Я хочу добавить списки «b», «c» и «d» в свой список «a». Затем я хочу распечатать отдельные списки в каждой строке. Мой ожидаемый результат таков:

 [(4, 'Blue'), (3, 'Red'), (4, 'Red')] [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] [(1, 'Green'), (3, 'Blue'), (3, 'Green')] [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  

Мой текущий код:

 a = [(4, 'Blue'), (3, 'Red'), (4, 'Red')] b = [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] c = [(1, 'Green'), (3, 'Blue'), (3, 'Green')] d = [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  a.append(b) a.append(c) a.append(d)  for x in a:  print(x)  

Мой текущий выход составляет:

 (4, 'Blue') (3, 'Red') (4, 'Red') [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] [(1, 'Green'), (3, 'Blue'), (3, 'Green')] [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  

Как вы видите, первые 3 строки вывода разделены, а не вместе. Как я могу изменить это, чтобы оно отображалось в соответствии с моими ожидаемыми результатами?

Комментарии:

1. Вам нужен список списков или список элементов?

2. Вы можете использовать a.extend([b, c, d]) вместо добавления 3 раза.

3. Разве тебе просто не нужно e = [a,b,c,d] ?

4. Извините за первоначальную дублирующуюся маркировку. Я неправильно истолковал ваш предполагаемый результат.

5. Вам вообще не нужно использовать .append , как указывает @Sayse. Но вы можете легко исправить код, просто поняв, что произошло. Подумайте: почему вы a.append(b) даете начальные элементы a , а затем b как единый элемент? Учитывая, что добавление b вставляет правильную вещь в ваш вывод, можете ли вы придумать способ правильно вставить ее a в свой вывод? (Используя .append(a) на чем-то, верно?) Если бы вы сделали это, какую отправную точку вам нужно было бы иметь вместо этого? (это должно было бы быть отдельной вещью, верно, которая пуста? Да?)

Ответ №1:

Ваш текущий код добавляет каждый список b/c/d в качестве элемента. Итак, у вас есть список из 6 элементов, последние 3 из которых являются списками.

 [(4, 'Blue'),  (3, 'Red'),  (4, 'Red'),  [(2, 'Green'), (4, 'Green'), (1, 'Yellow')],  [(1, 'Green'), (3, 'Blue'), (3, 'Green')],  [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]]  

Я думаю, что вы хотите использовать контейнер большего размера. (ПОЧЕМУ? Я не знаю, я думаю, что это фиктивный пример части более крупного кода).

 a = [(4, 'Blue'), (3, 'Red'), (4, 'Red')] b = [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] c = [(1, 'Green'), (3, 'Blue'), (3, 'Green')] d = [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  out = [a] out.append(b) out.append(c) out.append(d) # or out = [a,b,c,d] # or out.extend([b,c,d])  for x in out:  print(x)  

выход:

 [(4, 'Blue'), (3, 'Red'), (4, 'Red')] [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] [(1, 'Green'), (3, 'Blue'), (3, 'Green')] [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  

Ответ №2:

Проблема здесь в том, что вы добавляете b , c , и d в качестве элементов в a , что означает , что исходные элементы a не вложены в список, подобный списку b , c , и d .

Чтобы сначала упаковать элементы a в список, мы можем сделать a = [a] это перед добавлением.

Таким образом, наш код теперь становится:

 a = [(4, 'Blue'), (3, 'Red'), (4, 'Red')] b = [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] c = [(1, 'Green'), (3, 'Blue'), (3, 'Green')] d = [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  a = [a] a.append(b) a.append(c) a.append(d)  for x in a:  print(x)  

Выход:

 (4, 'Blue'), (3, 'Red'), (4, 'Red')] [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] [(1, 'Green'), (3, 'Blue'), (3, 'Green')] [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  

Ответ №3:

Мой ожидаемый результат должен быть:

 [(4, 'Blue'), (3, 'Red'), (4, 'Red')] [(2, 'Green'), (4, 'Green'), (1, 'Yellow')] [(1, 'Green'), (3, 'Blue'), (3, 'Green')] [(2, 'Blue'), (1, 'Red'), (4, 'Yellow')]  

Это неверный список. Это всего лишь четыре разных списка.

Комментарии:

1. Тарамон имеет в виду вывод, сгенерированный for циклом, а не сам список

2. Это действительно, операция печатает списки

3. Результат получается в результате перебора списка и print ввода каждого элемента. Ясно, что ОП говорит, что результирующие данные должны быть списком списков, но проблема в том, что вместо этого они содержат некоторые элементы из первого списка, смешанные с другими списками.