我想知道是否有一种方法可以在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))


请注意,提供给str.join()而不是生成器表达式时,list的执行速度更快。

关于python - 在打印语句中解包参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44384453/

10-10 17:32