2016-09-22 2 views
1

튜플의 항목이 혼합 된 형식 (int, float, tuple) 인 튜플 목록을 가지고 있으며 목록의 각 요소를 한 줄에 인쇄하려고합니다.중첩 된 튜플 혼합 형식으로 인쇄

예 목록 :

[('520', 
    (0.26699505214910974, 9.530913611077067e-22, 1431, 
    (0.21819421133984918, 0.31446394340528838), 11981481)), 
('1219', 
    (0.2775519783082116, 2.0226340976042765e-25, 1431, 
    (0.22902629625165472, 0.32470159534237308), 14905481))] 

나는 만분의 장소로 인쇄 포맷 된 수레와 한 줄로 각 튜플을 인쇄하고 싶습니다 :

[('520', (0.2669, 9.5309e-22, 1431, (0.2181, 0.3144), 11981481)), 
('1219', (0.2775, 2.0226e-25, 1431, (0.2290, 0.3247), 14905481))] 

I가 pprint를 사용했다 한 줄로 모든 것을 얻으십시오.

pprint(myList, depth=3, compact=True) 
> ('1219', (0.2775519783082116, 2.0226340976042765e-25, 1431, (...), 14905481))] 

그러나 적절한 방법은 확실하지 않았습니다. 부동 소수점 형식으로 플로트를 포맷합니다. (목록을 반복하면서 각 튜플을 반복하고 if-float/if-int/if-tuple을 확인하고 "%6.4f" % x을 통해 모든 부동 소수점을 변환하는 것보다 더 멋진 방법이 있어야합니다.

답변

1

이것은 정확히 필요한 것은 아니지만 매우 가깝고 코드는 꽤 컴팩트합니다. 귀하의 예를 들어

def truncateFloat(data): 
    return tuple(["{0:.4}".format(x) if isinstance(x,float) else (x if not isinstance(x,tuple) else truncateFloat(x)) for x in data]) 
pprint(truncateFloat(the_list)) 

는 결과 당신은 당신이 원하는 것을 얻을 .format()의 옵션을 재생할 수 있습니다

(('520', ('0.267', '9.531e-22', 1431, ('0.2182', '0.3145'), 11981481)), 
('1219', ('0.2776', '2.023e-25', 1431, ('0.229', '0.3247'), 14905481))) 

입니다.

+0

내가 상상했던 것만 큼 좋지는 않습니다 (사용 가능한 재귀 인쇄 서식 기능이 있어야한다고 생각합니다). 그러나 작업이 완료되었습니다. 감사! – Sal

관련 문제