Я пытаюсь понять, как распечатать каждый элемент в обоих списках в отдельных строках, например:
Глава первая Тест [большое пространство] 84%
но вместо этого он распечатывает весь список, например:
[«Тест по главе 1», «Тест по главе 2», «Тест по главе 3»] [84%, 75%, 90%]
Кто-нибудь знает, как исправить эту проблему?
Вы можете попробовать:
for test, grade in zip(testSet, calculatedMarks):
print("{} {}".format(test, grade))
В вашем примере списки весь будут распечатаны за один вызов print
.
Это будет перебирать списки (создавая пары из каждого списка с помощью zip
) и печатать каждую пару в отдельной строке.
Как и в ответе Dawg, вы можете использовать понимание списка и функцию str.join
вместо цикла for с телом, чтобы получить это в одной строке / операторе печати.
Данный:
>>> 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%
Прочтите больше о формате мини-язык, чтобы узнать больше об этих параметрах.
Python 2 или Python 3? Если Python 3, добавьте скобку для print
Придерживаясь вашего текущего подхода, вы можете внести небольшие изменения, либо распечатав 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]))
Если вы предполагаете, что два списка имеют одинаковое количество индексов, зачем использовать enumerate
вместо zip
?
Я также предполагаю, что, если OP не смог бы собрать это вместе, более постепенный шаг в правильном направлении был бы чем-то, что он понял бы и не слишком чуждым, петли с enumerate
- это меньший шаг, чем zip
На мой взгляд, это более питонический ответ. Спасибо, чувак