#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. Результат получается в результате перебора списка и