Python:将元组iterable转换为字符串iterable
我从sqlite3 select语句中得到一个元组的iterable,我想将这个iterable赋予一个需要字符串iterable的函数。如何重写下一个函数以给出元组的第一个索引?或者更准确地说,什么是正确的蟒蛇式方法Python:将元组iterable转换为字符串iterable,python,sqlite,Python,Sqlite,我从sqlite3 select语句中得到一个元组的iterable,我想将这个iterable赋予一个需要字符串iterable的函数。如何重写下一个函数以给出元组的第一个索引?或者更准确地说,什么是正确的蟒蛇式方法 >>> res = conn.execute(query,(font,)) >>> train_counts = count_vect.fit_transform(res) AttributeError: 'tuple' object has
>>> res = conn.execute(query,(font,))
>>> train_counts = count_vect.fit_transform(res)
AttributeError: 'tuple' object has no attribute 'lower'
编辑:
由于映射涉及迭代整个列表,因此所需时间是Niklas提供的构建生成器所需时间的两倍
第一个=
l=列表
对于xrange10中的i:
l、 附录:,
对于i[0]中的j,对于l中的i:
J
秒=
l=列表
对于xrange10中的i:
l、 附录:,
转换为字符串=lambda t:%d%t
strings=mapconvert_to_string,l
对于字符串中的j:
J
第三=
l=列表
对于xrange10中的i:
l、 附录:,
字符串=[t[0]表示l中的t]
对于字符串中的j:
J
打印Niklas B.%f%timeit.Timerfirst.timeit
打印%f%timeit.Timersecond.timeit
打印Richard Fearn 2%f%timeit.Timerthird.timeit
>>>
尼古拉斯B.4.744230
理查德·费恩12.016272
理查德·费恩212.041094
您需要编写一个函数,将每个元组转换为字符串;然后可以使用map将元组序列转换为字符串序列 例如: 假设每个元组包含3个整数 res=1,2,3,4,5,6 将3整数元组x、y、z转换为格式为x-y-z的字符串 将\u转换为\u字符串=λt:%d-%d-%d%t 将每个元组转换为字符串 strings=mapconvert_to_string,res 调用与前面相同的函数,但使用字符串序列 序列计数=计数向量拟合字符串 如果需要每个元组中的第一项,则函数可以是: 转换为字符串=lambda t:t[0] 假设第一个元素已经是字符串 实际上,在这种情况下,您可以完全避免lambda并使用列表理解: strings=[t[0]表示以res表示的t]
简单的解决方案是使用生成器表达式:
count_vect.fit_transform(t[0] for t in res)
您也可以对初始map/lambda位使用列表理解:strings=[%d-%d%x,y,z代表res中的x,y,z]@NiklasB。请将您的评论作为答案发表,为了公平起见,我将接受您的评论:Python 3中的map与生成器表达式一样懒惰: