簡體   English   中英

在打印語句中解包參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM