Python:使用前缀创建顺序列表的简短方法

时间:2015-03-30 06:17:45

标签: python

如何生成如下字符串(或Pandas系列):

a1,a2,a3,a4,...,a19

以下作品,但我想知道更简短的方法

my_str = ""
for i in range(1, 20):
   comma = ',' if i!= 19 else ''
   my_str += "d" + str(i) + comma

2 个答案:

答案 0 :(得分:6)

您可以使用列表推导来生成单个元素(使用字符串连接或str.format),然后使用join生成的列表在分隔符字符串(逗号)上:

>>> ['a{}'.format(i) for i in range(1, 20)]
['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a17', 'a18', 'a19']
>>> ','.join(['a{}'.format(i) for i in range(1, 20)])
'a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19'

答案 1 :(得分:1)

怎么样:

s = ','.join(["a%d" % i for i in range(1,20)])
print(s)

输出:

a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19

(这使用了一个生成器表达式,它比加入列表推导更有效 - 只是稍微用这么短的列表,但是)现在使用列表推导!有关为什么列表推导更适合join的生成器表达式,请参阅注释。