【问题标题】:How to fill a list in a single line with n integers?如何用 n 个整数在单行中填充列表?
【发布时间】:2021-01-07 18:54:05
【问题描述】:

我想在一行中用 n 个整数填充一个列表,我试过了,但是如何添加 n 的限制?

L=[int(x) for x in input().split()]

【问题讨论】:

  • [k for k in in range(n)] ?
  • 单行实际上并不是做所有事情的方法:使用 for 循环和计数器,因此一旦计数器超过限制,循环就会中断。
  • 限制为最大可用整数还是限制为数字?
  • 这能回答你的问题吗? How can I generate a list of consecutive numbers?
  • 这是我想用 n 个整数填充一个列表但在一行中的东西,因为我会将它发送给 codeforces 上的问题提交

标签: python


【解决方案1】:

zip 停在最短的序列上。您可以使用它来限制您消耗的拆分项目的数量。

limit = 5
L=[int(x) for _,x in zip(range(limit), input().split(maxsplit=limit))]

【讨论】:

  • 物有所值的好答案
  • downvote 真的是个谜,因为这实际上比其他解决方案更好,因为它们创建了两个列表......这只会创建一个大小正好合适的列表(ziprange 都是迭代器...)
  • maxsplit=limit 添加到您的代码中会在 10MM int 列表上产生另外 20 倍的改进。类似[int(x) for _,x in zip(range(limit), input.split(maxsplit=limit))] 的地方input= ' '.join(([str(x) for x in range(10000000)])
  • @Chris = [int(x) for x in "1 2 3 4 5 6".split(maxsplit=3)] 结果为 ValueError: invalid literal for int() with base 10: '4 5 6'
  • @tdelaney 您必须将它与您的 zip 结合使用才能在最后一个未拆分数字之前终止进程
【解决方案2】:

在极限处切片。

limit = 3
L = [int(x) for x in input().split()][:limit]

【讨论】:

    【解决方案3】:

    这行得通吗?

    n=int(input())
    while True:
      L=[int(x) for x in input().split()]
      if len(L)==n:
         break
    

    【讨论】:

    • 你为什么要问我们?你应该知道...顺便说一下,如果这是一个在线编码挑战,大多数情况下您实际上并不需要这样做,因为输入将以预期的格式出现...
    猜你喜欢
    • 1970-01-01
    • 2010-09-08
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多