Java中的nextInt(),hasNext()的Python实现是什么?

2024-04-19 23:27:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个输入文件

1 2
10 2
81 3
23 6
2537857295 19
34271891003654321 1267253

我在读这样的文件

with open("powersearch.txt") as fileIn:
    for line in fileIn:
        print line

我想知道,对于每一行,是否要将第一个整数存储为firstNum,将第二个整数存储为secondNum。有了Java,我可以使用scanner并执行nextInt()hasNext()来获取整数,Python中的等价物是什么?


Tags: 文件intxtforaswithline整数
3条回答

从字符串中解析int时,只需使用int(s),其中s是字符串。

我认为这是你例子中最合乎逻辑的方式:

with open("powersearch.txt") as fileIn:
    for line in fileIn:
        n1, n2 = (int(s) for s in line.split())
        print(n1, n2)

Python是一种不同于Java的语言,在我看来,它更具表现力(我可以在一行代码中完成比Java中更多的工作,并且仍然可以编写可读的代码)。如果你试着用Python编写Java的东西,你会发现这种语言的效率比它能做到的要低得多。

EDIT-nightcacker的解决方案现在几乎相当。

(我假设您使用的是Python 2.x,而不是语法中的3.x。)

这是一个口味问题,但我更喜欢混合s.Lott和Nightcacker的解决方案:

with open("powersearch.txt") as fileIn:
    for line in fileIn:
        firstNum, secondNum = [int(s) for s in line.split()]
        print firstNum, secondNum

列表理解对我来说比地图更容易阅读。解构赋值允许我们获取两个项列表,并同时将元素值赋给两个不同的局部变量。

请抛弃Java思想。他们会把你搞糊涂的。

Python是另一种语言,您必须学习Pythonic方法。

这里有一个例子。

with open("powersearch.txt") as fileIn:
    for firstNum, secondNum in ( map(int, line.split()) for line in fileIn ):
        print firstNum, secondNum

相关问题 更多 >