Skip to main content
 首页 » 编程设计

python之在嵌套的 for 循环中,如何打印制表符和回车符分隔的数据组

2025年05月04日53rubylouvre

我的代码遍历视频中的帧,并对我之前在每个帧中选择的一组 x、y 点进行采样。 x,y 点包含在 boxes 中。

对于视频中的每一帧,我想在一行上打印 len(boxes) 像素值,它们之间有制表符,然后是下一帧的回车符。我实际上在这里对像素值进行了一些比率计算,但这并不真正相关。我只需要在我想要的位置获得带有制表符的输出,而不是回车符。

print("size of boxes: ", len(boxes)) 
for i in range (0, video.__len__(), 2): 
    for j in range(0, len(boxes)): 
        print(str(float(video[i][boxes[j]])/(video[i+1][boxes[j]])) + str('\t')) 
    print('\n') 

我得到这个而不是我想要的制表符分隔的 7 组:

 ('size of boxes: ', 7) 
    0.485893416928   
    0.602201257862   
    0.584277620397   
    0.759312320917   
    0.663671373556   
    0.70249017038    
    0.724576271186   
 
 
    0.496379726468   
    0.632218844985   
    0.532608695652   
    0.699738903394   
    0.731774415406   
    0.693527080581   
    0.772058823529   

请您参考如下方法:

使用 end 参数打印以覆盖打印换行符的默认行为:

print(video[i][boxes[j]] / video[i+1][boxes[j]], end='\t') 

请注意,如果这是 python 3,则 float 也应该是不必要的。如果您使用的是 python 2,则可以通过以下方式获得所有相关功能:

from __future__ import print_function, division 

如果我写这个,我会这样做:

s = '\n'.join( 
    '\t'.join( 
        str(v1[b] / v2[b]) 
        for b in boxes 
    ) 
    for v1, v2 in zip(video[0::2], video[1::2]) 
) 
print(s)