请问如何用简单的方法生成 a1,a2,....,a20 这样的序列

我google了下,查到了 Python: Short way of creating a sequential list with a prefix
https://stackoverflow.com/questions/293395...
现在用的是

 ['a{}'.format(i) for i in range(1, 20)]

有没有更简单的方法。

主要是用来给pandas中的列进行命名的。pandas, numpy中有无相关的函数。

R中的很简单:

paste('a',1:20,sep='')
Jason990420
最佳答案

好像没有更简单的方法

[f'a{i}' for i in range(20)]
np.core.defchararray.add('a', np.arange(20).astype(np.str))

如果常用, 自己定义一个, 比如

>>> def paste(head, start=0, stop=0, step=1, sep=''):
...     return [f'{head}{sep}{i}' for i in range(start, stop, step)]
...
>>> paste('a', 0, 10)
['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9']
>>> paste('a', 9, -1, -1)
['a9', 'a8', 'a7', 'a6', 'a5', 'a4', 'a3', 'a2', 'a1', 'a0']
>>> paste('a', 0, 10, sep='-')
['a-0', 'a-1', 'a-2', 'a-3', 'a-4', 'a-5', 'a-6', 'a-7', 'a-8', 'a-9']
4年前 评论
Coolest 4年前
讨论数量: 2
Jason990420

好像没有更简单的方法

[f'a{i}' for i in range(20)]
np.core.defchararray.add('a', np.arange(20).astype(np.str))

如果常用, 自己定义一个, 比如

>>> def paste(head, start=0, stop=0, step=1, sep=''):
...     return [f'{head}{sep}{i}' for i in range(start, stop, step)]
...
>>> paste('a', 0, 10)
['a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9']
>>> paste('a', 9, -1, -1)
['a9', 'a8', 'a7', 'a6', 'a5', 'a4', 'a3', 'a2', 'a1', 'a0']
>>> paste('a', 0, 10, sep='-')
['a-0', 'a-1', 'a-2', 'a-3', 'a-4', 'a-5', 'a-6', 'a-7', 'a-8', 'a-9']
4年前 评论
Coolest 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!