【问题标题】:How does name, *line = input().split() work in python 3? [duplicate]name, *line = input().split() 如何在 python 3 中工作? [复制]
【发布时间】:2023-03-08 16:46:02
【问题描述】:

我正在解决一个问题,以在 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


    【解决方案1】:

    它用空格(或换行符和其他一些东西)分割字符串,将name分配给第一个单词,然后将line分配给其余的单词,看看它到底做了什么:

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

    在 Python 中称为解包操作符,在 Python 3 中引入(这个特定操作)。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-13
        • 1970-01-01
        • 2017-04-18
        • 2019-08-07
        • 1970-01-01
        相关资源
        最近更新 更多