Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中nextInt()和hasNext()的Python实现是什么?_Java_Python - Fatal编程技术网

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

Java中nextInt()和hasNext()的Python实现是什么?,java,python,Java,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,我可以使用扫描器和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,我可以使用
扫描器
nextInt()
hasNext()
来获取整数,Python中的等价物是什么?

请放弃Java思想。他们只会把你弄糊涂

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

这里有一个例子

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

要从字符串中解析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内容,您会发现该语言的效率远远低于它所能达到的效率。

编辑-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
对我来说,列表理解比地图更容易阅读。解构赋值允许我们获取两项列表,并同时将元素值分配给两个不同的局部变量。

前面的答案(
n1,n2=(int(s)表示line.split())
)仅在使用两个数字时才起作用。否则,您将需要使用
map
功能

with open("powersearch.txt") as fileIn:
    for line in fileIn:
        line_int = list(map(int, line.split()))
        print(line_int)

其中缺少一个逗号。我认为“map(int(line.split())”应该是“map(int,line.split())”。最好使用惰性求值并使用
(int(s)表示line.split()中的s)
相反。如果一行上有100000个整数,则性能会显著提高。如果一行上没有两个整数,则无论如何都会导致错误。如果您担心更优雅地处理这种情况,则生成器表达式只是开始。