【问题标题】:Reading a line of integers in Python [duplicate]在Python中读取一行整数[重复]
【发布时间】:2013-04-04 13:03:19
【问题描述】:

我是 Python 的初学者,我正在 CodeChef 解决一个问题,我必须读取一行空格分隔的整数。这就是我正在做的:

def main():

  t=int(raw_input())    #reading test-cases

  while t!=0:
    n, k=raw_input().split()    #reading a line of two space separated integers
    n, r=int(n), int(r)    #converting them into int
    list=[]
    #reading a line of space separated integers and putting them into a list
    list[-1:101]=raw_input().split()   

现在我将列表中的每个元素转换为整数。有没有更好的方法来做到这一点?请推荐一个在线资源,我可以在其中使用 Python 并学习提示和技巧!

【问题讨论】:

  • t的目的是什么?
  • 你为什么要读取两个整数以及你想用[-1:101] slice 做什么?
  • 读取两个整数是解决方案的一部分,不要注意。来到切片,因为我必须读取一行空格分隔的整数并将它们放入一个列表中,所以我使用 list[-1:101]。号码不会超过 100 个。因此,使用 this 和 split(),所有数字(以字符串的形式)都存储在列表中。

标签: python


【解决方案1】:

在 Python 2 中,您可以编写:

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

这会读取一行,在空白处将其拆分,并将@​​987654322@ 应用于结果的每个元素。

如果您使用的是 Python 3,则等效表达式为:

numbers = list(map(int, input().split()))

numbers = [int(n) for n in input().split()]

【讨论】:

  • 如果我的输入类似于“insert 3 3”,意思是第一个字符串,然后是第二个和第三个 int 怎么办? (Python 3)
  • @DipenBakraniya 您可以将它们全部读取为str,然后将它们中的每一个转换为预期的类型
【解决方案2】:

map(int, list) 应该可以解决您的问题

【讨论】:

  • 你也可以试试 [int(i) for i in list]
猜你喜欢
  • 2017-01-31
  • 1970-01-01
  • 2012-12-04
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2019-07-15
  • 1970-01-01
相关资源
最近更新 更多