【问题标题】:Limiting number of input values in an array/list in Python在 Python 中限制数组/列表中输入值的数量
【发布时间】:2016-01-12 00:29:33
【问题描述】:

我正在使用以下语句获取列表中的输入值:

ar = map(int, raw_input().split())

但是,我想限制用户一次可以输入的数量。例如,如果限制由数字 n 指定,则数组应仅捕获程序期间输入的前 n 个值。

例如:如果 n = 6, 输入:

1 2 3 4 5 6 7 8 9 10

在执行 'print ar' 时,它应该显示以下内容且没有任何错误消息:

[1, 2, 3, 4, 5, 6]

【问题讨论】:

  • 它应该忽略输入的其余部分吗?

标签: python arrays list input split


【解决方案1】:

我正在寻找相同问题的解决方案。

我想出了我能在下面做的就是我的解决方案。

bookid = []
M = int(input())
S = input().split()
for i in range(M):
    books.append(S[i])
print(booksid)

但我认为这绝对不是最有效的方法,但很容易。

【讨论】:

    【解决方案2】:

    如果您想忽略输入的其余部分,则可以使用切片仅获取第一个 n 输入。示例 -

    n = 6
    ar = map(int, raw_input().split(None, n)[:n])
    

    我们还为str.split 使用了maxsplit 选项,这样它只拆分了6 次,然后取前6 个元素并将它们转换为int。

    这是为了提高性能。我们也可以做简单的 - ar = map(int, raw_input().split())[:n],但它的性能不如上述解决方案。

    演示 -

    >>> n = 6
    >>> ar = map(int, raw_input().split(None, n)[:n])
    1 2 3 4 5 6 7 8 9 0 1 2 3 4 6
    >>> print ar
    [1, 2, 3, 4, 5, 6]
    

    【讨论】:

    • 太棒了!谢谢,这是一个非常优雅的解决方案,正是我想要的。我对 python 很陌生,切片对我来说是一个很新鲜的概念。
    • 实际上我发现使用语句:'ar = map(int, raw_input().split())[:n]' 也可以。不必为 split() 函数调用提供参数。
    • 是的,我在回答中已经解释过了。我的第一个解决方案就是这样。但是为了获得更高的性能,我给出了当前的解决方案。
    • 通过像这样的简单切片,您将获取输入中的所有数字,将它们全部拆分,然后在切片之前将它们全部转换为 int 并获得第一个 n 结果。
    • 啊好吧,看不出我是怎么错过的!
    【解决方案3】:

    ar 仅索引到第 6 个元素怎么样?从技术上讲,它是第 7 个元素,因为 newarray 会切到第 n 个元素,但不包括第 n 个元素

    ar = map(int, raw_input().split())
    print ar
    #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    newarray=ar[0:6]
    print newarray
    #[1, 2, 3, 4, 5, 6]
    

    这应该允许无限输入

    【讨论】:

      猜你喜欢
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 2018-09-29
      • 2022-12-07
      • 1970-01-01
      相关资源
      最近更新 更多