Python - элементы вывода в двух списках на отдельных строках

1

Я пытаюсь понять, как я буду печатать каждый элемент в обоих списках на отдельных строках, таких как:

Глава 1 Тест [большое пространство] 84%

но вместо этого он печатает весь список, например:

["Тест на первое место", "Тест на два главы", "Тест на три главы"] [84%, 75%, 90%]

Кто-нибудь знает, как решить эту проблему?

Теги:
python-3.x

3 ответа

1
Лучший ответ

Дано:

>>> li1=['Chapter One Test', 'Chapter Two Test', 'Chapter Three Test']
>>> li2=['84%', '75%', '90%']

Вы можете сжать два списка вместе:

>>> print('\n'.join(['{}\t{}'.format(*t) for t in zip(li1,li2)]))
Chapter One Test    84%
Chapter Two Test    75%
Chapter Three Test  90%

Если вы хотите создать таблицу, вы можете сделать ширину поля фиксированной, а не \t разделенной:

>>> print('\n'.join(['{:22s}{:3s}'.format(*t) for t in zip(li1,li2)]))
Chapter One Test      84%
Chapter Two Test      75%
Chapter Three Test    90%

Узнайте больше о формате мини-языка, чтобы узнать больше об этих параметрах.

  • 0
    Это более питонный ответ на мой взгляд. Спасибо, черт
  • 1
    Python 2 или Python 3? Если Python 3, добавьте круглые скобки для print
1

Вы можете попробовать:

   for test, grade in zip(testSet, calculatedMarks):
       print("{}    {}".format(test, grade))

Ваш пример будет печатать целые списки в одном вызове print.

Это будет перебирать списки (создавая пары из каждого списка с помощью zip) и печатать каждую пару на своей собственной строке.

Как и в ответе str.join, вы можете использовать понимание списка и функцию str.join вместо цикла for с телом, чтобы получить это в одной строке/заявлении печати.

0

Придерживаясь своего текущего подхода, вы можете сделать небольшие корректировки, либо распечатав index один за другим, либо сделав цикл, используя index из одного из enumerated списков, так как они имеют равную длину и отсортированы, чтобы соответствовать уже, я бы также сказал, заглядывая в l.just и r.just для достижения форматирования, которое хорошо сочетается

print ("{}                     {}".format(testSet[0], calculatedMarks[0]))
print ("{}                     {}".format(testSet[1], calculatedMarks[1]))
print ("{}                     {}".format(testSet[2], calculatedMarks[2]))

for idx, item in enumerate(testSet):
    print("{}                      {}".format(testSet[idx], calculatedMarks[idx]))
  • 0
    Если вы предполагаете, что два списка имеют одинаковое количество индексов, зачем использовать enumerate вместо zip ?
  • 0
    Я также предполагаю, что если OP не смог бы собрать воедино то, что более постепенный шаг в правильном направлении был бы чем-то, что он мог бы понять, и не слишком чужд, циклы с enumerate - это меньший шаг, чем zip

Ещё вопросы

Сообщество Overcoder
Наверх
Меню