Python中如何实现Java中的nextInt()和hasNext()?
我有一个输入文件
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中有什么类似的方式呢?
4 个回答
3
编辑 - nightcracker 的解决方案现在几乎是等价的。
(我假设你在使用 Python 2.x 而不是 3.x,因为从语法上看是这样的。)
这主要是个人喜好,不过我更喜欢 S.Lott 和 nightcracker 的解决方案结合起来:
with open("powersearch.txt") as fileIn:
for line in fileIn:
firstNum, secondNum = [int(s) for s in line.split()]
print firstNum, secondNum
对我来说,列表推导式比 map 更容易阅读。解构赋值让我们可以同时把两个元素的值赋给两个不同的局部变量。
6
请忽略那些关于Java的想法。它们只会让你更加困惑。
Python是一种不同的编程语言,你需要学习Python特有的写法和思维方式。
下面是一个例子。
with open("powersearch.txt") as fileIn:
for firstNum, secondNum in ( map(int, line.split()) for line in fileIn ):
print firstNum, secondNum
6
要从一个字符串中提取整数,你只需要用 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是不同的编程语言,我觉得Python更灵活(我可以在一行代码中做更多事情,而且代码依然容易理解)。如果你试着在Python中写Java的代码,你会发现Python的效果没有它本来那么好。