首页 > 解决方案 > name, *line = input().split() 如何在 python 3 中工作?

问题描述

我正在解决一个问题,以在 HackerRank 上的 python 3 中找到其他 n 名学生中一名学生的平均分数。我还没有为它写代码。但是在 HackerRank 中,他们已经为我们提供了一些代码,比如接受输入的代码。我不明白 *line = input().split() 实际在做什么。

我知道 .split() 的作用。但这整条线令人困惑。

This is the code that has been already provided :


if __name__ == '__main__':
    n = int(input())
    student_marks = {}
    for _ in range(n):
        name, *line = input().split()
        scores = list(map(float, line))
        student_marks[name] = scores
    query_name = input()

标签: python

解决方案


* 用于从 split 语句中获取额外的回报。

所以如果你有:

>>> first, *rest = input().split()
>>> print(first)
>>> print(*rest)

运行它并输入“你好,我的名字是鲍勃”它会打印出来

hello
['my', 'name', 'is', 'bob']

另一个例子是:

>>> a, b, *rest = range(5)
>>> a, b, rest
(0, 1, [2,3,4])

它也可以用于任何可能导致一些有趣情况的位置

>>> a, *middle, c = range(4)
>>> a, middle, c
(0, [1,2], 3)

推荐阅读