并排打印列表和嵌套列表

printing list and nested list side by side

直奔问题。 两个列表。一个是嵌套的,一个是普通的。

a = ['Name', 'Age', 'Class', 'Marks', 'Grade']
b = [['n1', 12, '1st', 40, 'b'],
     ['n2', 14, '1st', 70, 'a'],
     ['n3', 16, '2nd', 90, 's'],
     ['n4', 14, '3rd', 40, 'b'],
     ['n5', 12, '1st', 50, 'b'],
     ['n6', 18, '3rd', 30, 'c'],
     ['n7', 11, '1st', 80, 'a'],
     ['n8', 10, '2nd', 20, 'd']]

如何像这样打印以上两个列表(并排且不带 , [])。

Name   : n1
Age    : 12
Class  : 1st
Marks  : 40
Grade  : b

同样,它需要以相同的方式打印给所有学生。

def details():
    for i in b:
        for j in i:
            for k in a:

然后我就卡在那里了。我尝试将 zip(a,b) 与 enumerate 混合使用,但它不起作用。 因为,我是 Python 的新手,所以我搞不懂。请帮忙解决这个问题。提前致谢。

你可以用 enumerate 来尝试这样的事情:

for i in b:
    for idx,j in enumerate(i):
        print("{:<5}".format(a[idx]),":",j)

简单地遍历列表列表 b 并使用来自 a:

的键压缩每个内部列表
a = ['Name', 'Age', 'Class', 'Marks', 'Grade']
b = [['n1', 12, '1st', 40, 'b'],
     ['n2', 14, '1st', 70, 'a'],
     ['n3', 16, '2nd', 90, 's'],
     ['n4', 14, '3rd', 40, 'b'],
     ['n5', 12, '1st', 50, 'b'],
     ['n6', 18, '3rd', 30, 'c'],
     ['n7', 11, '1st', 80, 'a'],
     ['n8', 10, '2nd', 20, 'd']]

for inner in b:
     for key, value in zip(a, inner):
          print(f"{key:<5} : {value}")
     print()

输出:

Name  : n1
Age   : 12
Class : 1st
Marks : 40
Grade : b

Name  : n2
Age   : 14
Class : 1st
Marks : 70
Grade : a

Name  : n3
Age   : 16
Class : 2nd
Marks : 90
Grade : s

Name  : n4
Age   : 14
Class : 3rd
Marks : 40
Grade : b

Name  : n5
Age   : 12
Class : 1st
Marks : 50
Grade : b

Name  : n6
Age   : 18
Class : 3rd
Marks : 30
Grade : c

Name  : n7
Age   : 11
Class : 1st
Marks : 80
Grade : a

Name  : n8
Age   : 10
Class : 2nd
Marks : 20
Grade : d

请参阅 string format mini language documentation 了解如何使用空格格式化您的字符串。

您可以这样访问

for i in b:
    for j in range(len(a)):
        print(a[j]+" : "+str(i[j]))

您可以执行以下操作:

a = ['Name', 'Age', 'Class', 'Marks', 'Grade']
b = [['n1', 12, '1st', 40, 'b'],
     ['n2', 14, '1st', 70, 'a'],
     ['n3', 16, '2nd', 90, 's'],
     ['n4', 14, '3rd', 40, 'b'],
     ['n5', 12, '1st', 50, 'b'],
     ['n6', 18, '3rd', 30, 'c'],
     ['n7', 11, '1st', 80, 'a'],
     ['n8', 10, '2nd', 20, 'd']]

for lst in b:
    for t in [n for n in zip(a,lst)]: # For tuple in the list of tuples generated by zip()
        print(f"{t[0].ljust(7)}: {t[1]}") # Print the 0 index (first element) of the tuple with ljust (padding) of 7 spaces, followed by a colon, space, and the 1 index (second element) of the tuple
    print('------------')

输出:

Name   : n1
Age    : 12
Class  : 1st
Marks  : 40
Grade  : b
------------
Name   : n2
Age    : 14
Class  : 1st
Marks  : 70
Grade  : a
------------
Name   : n3
Age    : 16
Class  : 2nd
Marks  : 90
Grade  : s
------------
Name   : n4
Age    : 14
Class  : 3rd
Marks  : 40
Grade  : b
------------
Name   : n5
Age    : 12
Class  : 1st
Marks  : 50
Grade  : b
------------
Name   : n6
Age    : 18
Class  : 3rd
Marks  : 30
Grade  : c
------------
Name   : n7
Age    : 11
Class  : 1st
Marks  : 80
Grade  : a
------------
Name   : n8
Age    : 10
Class  : 2nd
Marks  : 20
Grade  : d
------------

简单的 Pythonic-one-liner,优雅的显示:

print(*[f"{a[x]:6}: {z}" for i in b for x,z in enumerate(i)], sep='\n')