作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用 sql 查询检索数据
bounds = cursor.fetchone()
我得到一个像这样的元组:
(34.2424, -64.2344, 76.3534, 45.2344)
我想要一个像 34.2424 -64.2344 76.3534 45.2344
是否存在可以做到这一点的函数?
最佳答案
使用str.join()
:
>>> mystring = ' '.join(map(str, (34.2424, -64.2344, 76.3534, 45.2344)))
>>> print mystring
34.2424 -64.2344 76.3534 45.2344
您必须在此处使用 map(它将元组中的所有项目转换为字符串),否则您将得到一个 TypeError
。
关于 map()
的一些说明功能:
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
如对此答案的评论所示,str.join()
可以采用生成器而不是列表。通常情况下,这会更快,但在这种情况下,它会更慢。
如果我要这样做:
' '.join(itertools.imap(str, (34.2424, -64.2344, 76.3534, 45.2344)))
它会比使用 map()
慢。区别在于imap()
返回一个生成器,而map()
返回一个列表(在python 3中它返回一个生成器)
如果我要这样做:
''.join(str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344))
由于解释的原因,它会比在 列表 周围加上括号要慢 here .
在您的(OP)案例中,任何一个选项都无关紧要,因为这里的性能似乎并不是什么大问题。但是,如果您曾经处理过大型 float /整数元组,那么现在您知道使用什么来获得最高效率了:)。
关于python - 如何将元组转换为不带逗号和括号的值字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17426386/
我是一名优秀的程序员,十分优秀!