我正在解决一个问题,目的是在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()
答案 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中引入的(此特定操作)。