从数字中获取字母列表

时间:2014-11-24 06:43:14

标签: python

我有以下列表:

mylist = [1,2,3,4,5]

我必须得到以下列表:

result = ['A','B','C','D','E']

在另一个案例中,我有清单:

[1,2,3]

我必须得到

['A','B','C']

你会怎么做?

7 个答案:

答案 0 :(得分:5)

>>> import string
>>> [string.ascii_uppercase[x - 1] for x in [1, 2, 3, 4, 5]]
['A', 'B', 'C', 'D', 'E']

答案 1 :(得分:3)

>>> import operator
>>> import string
>>> operator.itemgetter(*[1, 2, 3, 4, 5])(' ' + string.ascii_uppercase)
('A', 'B', 'C', 'D', 'E')

(但不要真的这样做......)

答案 2 :(得分:3)

不依赖于其他模块的解决方案:

def to_letters(lst):
    return map(lambda x: chr(64+x), lst) # ascii code of 'A' is 65, 'B' is 66 etc

print to_letters([1, 2, 3]) # prints ['A', 'B', 'C']

答案 3 :(得分:2)

使用String.ascii_uppercase

>>> from string import ascii_uppercase
>>> l= []
>>> for i in mylist:
...     l.append(ascii_uppercase[i-1])
...     
... 
>>> l
['A', 'B', 'C', 'D', 'E']
>>> 

或使用简单的list comprehension

>>> [ascii_uppercase[i-1] for i in mylist]
['A', 'B', 'C', 'D', 'E']

答案 4 :(得分:1)

A = []
for i in [1, 2, 3]:
    A += chr(i + 64)

甚至更快:

B = [1, 2, 3]
A = [chr(i+64) for i in B]

答案 5 :(得分:0)

您可以使用chr功能

>>> chr(96 + 1)
'a'

答案 6 :(得分:0)

只需一个班轮,无需导入任何模块:

ans = [chr(i + 64) for i in [1, 2, 3]]