map(str, (34.2424, -64.2344, 76.3534, 45.2344)等同于[str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344)]。
这比使用列表理解要快一点:
$ python -m timeit "map(str, (34.2424, -64.2344, 76.3534, 45.2344))"
1000000 loops, best of 3: 1.93 usec per loop
$ python -m timeit "[str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344)]"
100000 loops, best of 3: 2.02 usec per loop
如果我收到了你的信息,你就得到了一堆浮标,对吗?
如果是,则应使用以下代码:
我们在这里将元组中的每个值转换为字符串,因为^{} 方法只能处理字符串列表。
如果
t
是一个字符串元组,则代码将只是' '.join(t)
。如果要获取格式为
"(34.2424 , -64.2344 , 76.3534 , 45.2344)"
的字符串,首先应该去掉不必要的parthensis和逗号:如果您愿意使用} 生成任意格式。用一个分隔符来处理这个问题的具体情况实际上有点麻烦:
*
魔法,也可以使用^{处理任何长度(如
join
)的更健壮的版本是:但附加值是,如果您想将格式扩展到更复杂的内容,您可以选择:
从这里开始,您的字符串formatting options非常多样化。
使用^{} :
您必须在这里使用map(它将元组中的所有项转换为字符串),否则您将得到一个
TypeError
。关于^{} 函数的一点说明:
map(str, (34.2424, -64.2344, 76.3534, 45.2344)
等同于[str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344)]
。这比使用列表理解要快一点:
如对此答案的注释所示,
str.join()
可以使用生成器而不是列表。通常,这会更快,但在这种情况下,它是慢。如果我要做:
它将比使用
map()
慢。区别在于imap()
返回生成器,而map()
返回列表(在python 3中,它返回生成器)如果我要做:
这将比在列表理解周围加括号慢,因为原因是here。
在你(OP)的情况下,这两个选项都不重要,因为这里的性能似乎不是什么大问题。但是,如果您曾经处理过浮点/整数的大元组,那么现在您知道如何最大限度地提高效率:)。
相关问题 更多 >
编程相关推荐