从 iterable 打印可变长度的解压项目

Printing variable length unpacked items from iterable

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

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, <b>' '.join(map(str, marks))</b>))

这将产生:

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