我有以下列表:
mylist = [1,2,3,4,5]
我必须得到以下列表:
result = ['A','B','C','D','E']
在另一个案例中,我有清单:
[1,2,3]
我必须得到
['A','B','C']
你会怎么做?
答案 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]]