python从两个列表迭代打印

时间:2018-01-12 03:21:57

标签: python-3.x

让我们切入追逐:

我想写一个迭代的print语句,所以给定

<%= link_to "CSV", admin_report_user_path(@user.id, foo: "bar", baz: "quux"), target: "_blank" %>
# => <a href="user/report?id=1&foo=bar&baz=quux" target="_blank">CSV</a>

脚本应打印,以便将数字四舍五入到 6位小数,并且列表动态迭代。

示例:

names = ["val_loss","accuracy","f2_loss"] 
values= [0.2454431134, 0.832532234, 0.982762611]

我想要的迭代器类似于:

val_loss: 0.245443, accuracy: 0.832532, f2_loss: 0.982762

但当然上面的内容并不奏效,因为我不是一个python wiz。并且不能总是写一个非平凡的列表迭代器。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您可以使用zip和花式格式化;)

strs = []
for (name, value) in zip(names, values):    
    strs.append("{}:{:.6f}".format(name, value))

print(', '.join(strs))

或者,作为一个花哨的1-liner ......

print(', '.join(("{}:{:.6f}".format(n, v) for (n, v) in zip(names, values))))

<强>解释

在Python2中,使用itertools.izip代替zip,在Python3中使用zip。 Zip允许您懒惰地合并N-iterables并创建N-length的元组,因此zip([1, 2, 3], [4, 5, 6])实际上变为[(1, 4), (2, 5), (3, 6)]。 zip是任何Python程序员的绝佳工具。

至于格式化文章,您应该阅读documentation。快速解释是f代表浮动指针号,{}是替换组,:.6f表示最多6位小数的浮点数。

答案 1 :(得分:-2)

你可以这样做: - strr = [name +“:”+ str(value)+“,”名称中的名称为值中的值]