python字符串格式:不使用两个列表的方法?

python字符串格式:不使用两个列表的方法?,python,Python,使用以下代码: a = ['foo', 'bar', 'doh', 'rae'] 我希望字符串SUM(foo)作为foo,SUM(bar)作为bar,SUM(doh)作为doh,SUM(rae)作为rae。这项工作: 尝试了一些聪明的方法,比如将'SUM(%s)作为%s%([x代表a中的x],[x代表a中的x]),但显然不起作用,使用两个列表理解感觉效率低下 有什么建议吗?为什么不使用 如果a是一个大列表,那么您可能需要使用生成器,以避免像GWW指出的那样,首先在内存中创建整个列表 ", ".

使用以下代码:

a = ['foo', 'bar', 'doh', 'rae']
我希望字符串
SUM(foo)作为foo,SUM(bar)作为bar,SUM(doh)作为doh,SUM(rae)作为rae
。这项工作:

尝试了一些聪明的方法,比如将
'SUM(%s)作为%s%([x代表a中的x],[x代表a中的x])
,但显然不起作用,使用两个列表理解感觉效率低下

有什么建议吗?

为什么不使用

如果
a
是一个大列表,那么您可能需要使用生成器,以避免像GWW指出的那样,首先在内存中创建整个列表

", ".join('SUM({n}) AS {n}'.format(n=x) for x in a)

可以使用str.format函数在字符串中两次传递一个参数,类似于:

s = ', '.join(['SUM({0}) AS {0}'.format(x) for x in a])
通过一个列表理解和一个连接操作,它可以生成所需的输出

'SUM(foo) AS foo, SUM(bar) AS bar, SUM(doh) AS doh, SUM(rae) AS rae'

你好

如果使用生成器而不是列表理解,则代码的效率会更高。虽然效率可能会更低,但您也可以按照
“,”的思路进行操作。join('SUM('+x+')作为'+x代表a中的x)
'SUM(foo) AS foo, SUM(bar) AS bar, SUM(doh) AS doh, SUM(rae) AS rae'