Skip to main content
 首页 » 编程设计

python之python 中的意外 next() 行为,行似乎被跳过

2025年05月04日19wuhuacong

这是我正在运行的代码:

with open('test.txt','r') as fin: 
    for i,line in enumerate(fin): 
        print i 
        print fin.next() 

'test.txt' 在哪里:

    5 
    9 6 
    4 6 8 
    0 7 1 5  

我得到的输出是:

0  
9 6  
 
1 
0 7 1 5 

我很困惑为什么要跳过“4 6 8”行。我希望第 2 行在第一次迭代时打印,第 3 行在第二次迭代时打印,第 4 行在第三次迭代时打印。

相反,我在第二次迭代时得到第 4 行。

请您参考如下方法:

这是因为当你执行 for i,line in enumerate(fin) 时,对 enumerate 的调用已经在调用 fin.next()引擎盖下。因此,当您稍后手动调用 fin.next 时,您会在已经处理的行之后得到下一行。这就是为什么您似乎跳过了行。

如果您想观察更多这种行为,请查看以下代码片段产生的输出:

L1 = [1,2,3,4] 
L2 = ['a', 'b', 'c', 'd'] 
print zip(L1, L2) 

输出是:

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]  

将其与以下代码段进行比较:

with open('test.txt','r') as fin: 
    print zip(fin, fin) 

输出在哪里:

[('1 2 3 4\n' , 'a b c d \n')] 

现在您明白为什么您的输出似乎在跳行了吗?