[英]Unpacking argument in print statements
我想知道是否有一種方法可以在print語句中解壓值,也可以在函數f
解壓參數
這有效:
import numpy
er = numpy.array([0.36666667, 0.46666667, 0.43333333, numpy.nan])
l = 0.8
print('%0.3f | %0.3f | %0.3f | %0.3f | %0.1f' % (er[0], er[1], er[2], er[3], l))
# 0.367 | 0.467 | 0.433 | nan | 0.8
但是,我想避免使用多個er[x]
,而是改用*er
形式:
def f(a,b,c,d):
return True
print(f(*er))
# True
我試過了:
#print('%0.3f | %0.3f | %0.3f | %0.3f | %0.1f' % (*(er, numpy.array([l]))))
但是,這最后一行會生成“ SyntaxError:無效語法”錯誤。
有任何想法嗎?
由於您需要特定的格式,因此可以執行以下操作,該操作既可以定義分隔符( ' | '
),也可以設置各個值的格式( {:.3f}
):
print(' | '.join(['{:.3f}'.format(x) for x in er]))
向其中添加值很簡單:
print(' | '.join(['{:.3f}'.format(x) for x in er]) + ' | {:.1f}'.format(l))
請注意,當提供list
而不是生成器表達式時, str.join()
執行速度更快。
print('{:.3f} | {:.3f} | {:.3f} | {:.1f} | {:.3f}'.format(*(list(er) + [l])))
打開包裝之前,請確保所有arg都放在一個地方。
您不希望拆包任何東西,因為您想要%
之后有一個元組。
print('%0.3f | %0.3f | %0.3f | %0.3f | %0.1f' % (tuple(er) + (1,)))
0.367 | 0.467 | 0.433 | nan | 1.0
但是您最好使用str.format
。 在這里解壓縮是有意義的,因為您希望將每個數組項作為參數傳遞給函數。
print('{:0.3f} | {:0.3f} | {:0.3f} | {:0.3f} | {:0.1f}'.format(*er, 1))
0.367 | 0.467 | 0.433 | nan | 1.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.