我正在尝试从记录中解包学生姓名和标记并打印出来。我仅在标记中看到第一项,而不是整个标记列表。

records = [
    ("Name1", 1, 2, 3, 4 ,5),
    ("Name2", 2, 3, 8, 9, 10),
    ("Name3", 8, 9, 2, 3, 1)
    ]
for name, *marks in records:
    print("Name: {0}, Marks: {1}".format(name, *marks))`



输出:

Name: Name1, Marks: 1
Name: Name2, Marks: 2
Name: Name3, Marks: 8`


为什么不打印其他标记值?
如果我尝试遵循,那么将打印所有标记列表。

for name, *marks in records:
    print(name, *marks)`


输出:

Name1 1 2 3 4 5
Name2 2 3 8 9 10
Name3 8 9 2 3 1

最佳答案

您仅看到第一项的原因是因为您未指定{2}{3}等。

但是,您可以使用str.join例如将其余元素连接在一起,例如:

for name, *marks in records:
    print("Name: {0}, Marks: {1}".format(name, ' '.join(map(str, marks))))


这将产生:

Name: Name1, Marks: 1 2 3 4 5
Name: Name2, Marks: 2 3 8 9 10
Name: Name3, Marks: 8 9 2 3 1

关于python - 可反复打印可变长度的未包装物品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57233389/

10-12 18:45