我有一个函数,它接受元组的多个参数并相应地处理它。我想知道我是否可以在 for 循环中传递参数。例如:
def func(*args):
for a in args:
print(f'first {a[0]} then {a[1]} last {a[2]}')
然后我会调用该函数为
func(('is', 'this', 'idk'), (1,2,3), ('a', '3', 2))
我的问题是是否有办法在不更改函数定义本身的情况下修改循环中的函数调用:
func((i, i, i) for i in 'yes'))
这样它将打印:
first y then y last y
first e then e last e
first s then s last s
是的
,在调用中使用生成器表达式和*
参数解压缩:
func(*((i, i, i) for i in 'yes'))
也可以先用分配给变量的生成器表达式来编写:
args = ((i, i, i) for i in 'yes')
func(*args)
演示:
>>> func(*((i, i, i) for i in 'yes'))
first y then y last y
first e then e last e
first s then s last s
>>> args = ((i, i, i) for i in 'yes')
>>> func(*args)
first y then y last y
first e then e last e
first s then s last s
机器学习领域的另一个实现如下:
for clf, title, ax in zip(models, titles, sub.flatten()):
plot_contours(ax, clf, xx, yy, cmap=plt.cm.coolwarm, alpha=0.8)
ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
ax.set_xlim(xx.min(), xx.max())
ax.set_ylim(yy.min(), yy.max())
ax.set_xlabel("Sepal length")
ax.set_ylabel("Sepal width")
ax.set_xticks(())
ax.set_yticks(())
ax.set_title(title)