수레 목록이 있습니다. 간단히 말하면 print
다음과 같이 표시됩니다.
[9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
목록을 순회하기 print "%.2f"
위해 for
루프 가 필요한을 사용할 수 있지만 더 복잡한 데이터 구조에서는 작동하지 않습니다. 나는 뭔가를 원한다 (나는 이것을 완전히 구성하고있다)
>>> import print_options
>>> print_options.set_float_precision(2)
>>> print [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
[9.0, 0.05, 0.03, 0.01, 0.06, 0.08]
답변
오래된 질문이지만 잠재적으로 유용한 것을 추가하겠습니다.
원시 Python 목록에 예제를 작성했지만 numpy
대신 배열 을 사용하기로 결정한 경우 (숫자의 배열을 다루는 것처럼 보이므로 예제에서 완벽하게 합법적입니다)이 명령이 있습니다. 당신이 구성했다 :
import numpy as np
np.set_printoptions(precision=2)
또는 실제로 정확한 숫자의 모든 소수를 계속보고 싶지만 예를 들어 후행 0을 제거하려면 형식 지정 문자열을 사용하는 것이 더 좋습니다 %g
.
np.set_printoptions(formatter={"float_kind": lambda x: "%g" % x})
한 번만 인쇄하고 전역 동작을 변경하지 않으 np.array2string
려면 위와 동일한 인수를 사용 하십시오.
답변
아무도 그것을 추가했다, 할 수있는 권장되는 방법 2.6+ 파이썬에서 향후 주목해야한다 문자열 형식화하는 것은 함께 format
파이썬 3+를 위해 준비하기.
print ["{0:0.2f}".format(i) for i in a]
새로운 문자열 형식화 구문 은 사용하기 어렵지 않지만 매우 강력합니다.
나는 그것이 pprint
뭔가를 가질 수 있지만 아무것도 찾지 못했습니다.
답변
보다 영구적 인 해결책은 다음과 같은 하위 클래스를 만드는 것입니다 float
.
>>> class prettyfloat(float):
def __repr__(self):
return "%0.2f" % self
>>> x
[1.290192, 3.0002, 22.119199999999999, 3.4110999999999998]
>>> x = map(prettyfloat, x)
>>> x
[1.29, 3.00, 22.12, 3.41]
>>> y = x[2]
>>> y
22.12
서브 클래 싱의 문제 float
는 명시 적으로 변수의 유형을 찾는 코드가 깨진다는 것입니다. 그러나 내가 말할 수있는 한, 그것이 유일한 문제입니다. 그리고 단순 x = map(float, x)
로의 전환을 취소합니다 prettyfloat
.
비극적으로, 당신은 불변 float.__repr__
하기 때문에 monkey-patch 만 할 수 없습니다 float
.
하위 클래스를 만들고 싶지 float
않지만 함수를 정의하는 데 신경 쓰지 않는다면 다음 map(f, x)
보다 훨씬 간결합니다.[f(n) for n in x]
답변
넌 할 수있어:
a = [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
print ["%0.2f" % i for i in a]
답변
“% .2f”와 같은 문자열을 곱할 수도 있습니다 (예 : “% .2f”* 10).
>>> print "%.2f "*len(yourlist) % tuple(yourlist)
2.00 33.00 4.42 0.31
답변
print "[%s]"%", ".join(map(str,yourlist))
이렇게하면 고정 정밀도 제약 조건 (예 "%.2f"
: 형식 지정) 을 도입하지 않고 인쇄 할 때 이진 표현의 반올림 오류를 방지 할 수 있습니다 .
[9.0, 0.053, 0.0325754, 0.0108928, 0.0557025, 0.0793303]
답변
l = [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
파이썬 2 :
print ', '.join('{:0.2f}'.format(i) for i in l)
파이썬 3 :
print(', '.join('{:0.2f}'.format(i) for i in l))
산출:
9.00, 0.05, 0.03, 0.01, 0.06, 0.08