如何从列表长度创建字符列表?

时间:2014-02-04 03:35:47

标签: python string list

我有一个清单:

list = [4,2,3]

我正在尝试创建它们作为字符列表的计数器,所以我最终得到了这个:

list = [[A, A, A, A][B, B][C, C, C]]

我将如何在Python中使用它?

谢谢,

4 个答案:

答案 0 :(得分:3)

play.py的内容

import string
def make_lists(a):
    characters = string.uppercase  # Relace this with your custom char set if necessary
    my_list = [[c] * n for n, c in zip(a, characters)]
    return my_list

输出:

In [11]: a = [4, 2, 3]

In [12]: play.make_lists(a)
Out[12]: [['A', 'A', 'A', 'A'], ['B', 'B'], ['C', 'C', 'C']]

答案 1 :(得分:2)

import string
in_list = [4, 2, 3]
out_list = [[string.uppercase[i]] * j for i, j in enumerate(in_list)]
print out_list

顺便说一下,不要调用变量list,它是内置函数的名称。

答案 2 :(得分:2)

只是另一种解决方案:

s = [4,2,3]
>>> [ [chr(y)]*x for x,y in zip(s, range(ord('A'), ord('A') + len(s))) ]
[['A', 'A', 'A', 'A'], ['B', 'B'], ['C', 'C', 'C']]
>>>

答案 3 :(得分:0)

通过列表理解:

lst = [4,2,3]
chars = ['A', 'B', 'C']
[[chars[j] for _ in range(lst[j])] for j in range(len(lst))]

正如其他答案所示,如果您只需要按字母顺序排列的字母,可以使用string模块

import string
[[string.uppercase[j] for _ in range(lst[j])] for j in range(len(lst))]