并排打印列表和嵌套列表
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')
直奔问题。 两个列表。一个是嵌套的,一个是普通的。
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')