* line = input()。split()在python 3中如何工作?

时间:2019-06-19 01:11:56

标签: python

我正在解决一个问题,目的是在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()

2 个答案:

答案 0 :(得分:4)

*用于从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)

答案 1 :(得分:4)

它用空格(或换行符和其他东西)分隔字符串,将name分配给第一个单词,然后将line分配给其余单词,以查看其真正含义确实:

>>> s = 'a b c d e f'
>>> name, *line = s.split()
>>> name
'a'
>>> line
['b', 'c', 'd', 'e', 'f']
>>> 

在Python中,它称为解包运算符,它是在Python 3中引入的(此特定操作)。