关于tuple([1])的疑问?

2013-10-08 22:54:15 +08:00
 brikhoff
tuple([1]) = (1,)
这个深入python里面也解释过:为创建单元素元组,需要在值之后加上一个逗号。没有逗号,Python 会假定这只是一对额外的圆括号,虽然没有害处,但并不创建元组。
其实我想问的是,如果在进行SQL IN 查询的时候,我最开始出来的时候会str(tuple([1, 2, 5, 9]))来生成'(1, 2 , 5, 9)'的字符串来连接查询,但是这样在1 == len(pid_list)的时候就会出现上面的问题,最后str([1, 2, 5, 9]).replace('[', '(').replace(']', ')')这样来实现。
虽然说有时候写代码,只要能实现这个功能就可以了,但是我想想也知道这个方法很笨,我想问问有没有其他更好的方法。写python不多,感觉肯定有我不知道的方法。
3396 次点击
所在节点    Python
6 条回复
ericls
2013-10-08 23:21:41 +08:00
1 == len(pid_list)
是什么问题?
vmebeh
2013-10-08 23:23:37 +08:00
最好不要直接拼接,文档有例子

http://docs.python.org/2/library/sqlite3.html#cursor-objects
farseerfc
2013-10-08 23:26:14 +08:00
沒理解清楚你的問題。你是說,你有一個list是pid_list,然後想最快得到它的'(1,2,3,4)'這樣的形式所以這麼寫str(tuple(pid_list)),並且不想要len(pid_list)==1時最後的那個逗號是麼?
你的方法不笨。Python裏面做事情一般只有一種做法,越清晰可讀越好,你的方法就很可讀。
如果是我的話,會這麼寫: '(%s)'%str(pid_list)[1:-1]
est
2013-10-09 00:58:05 +08:00
','.join()
likexian
2013-10-09 09:33:23 +08:00
有join不用,用什么str,str是这样用的吗
brikhoff
2013-10-09 10:10:15 +08:00
@likexian join + map?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/84908

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX