2014-02-04 5 views
-1

У меня есть список:Как создать список символов из длины списка?

list = [4,2,3] 

Я пытаюсь создать их в качестве счетчиков для списка символов как и я в конечном итоге с этим:

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

Как бы я идти об этом в Python ?

Спасибо,

+0

Вниз избиратели всегда имеют привычку объяснять, почему вы проголосовали. Давайте будем вежливы и объясним. :) –

+0

@LearningNeverStops Если вы наведите указатель мыши на кнопку downvote, вы будете читать: «Этот вопрос не показывает никаких исследований, он неясен или не полезен». Я не думаю, что копирование это каждый раз, когда вы downvote является продуктивным. Новые пользователи, вероятно, должны потратить время, чтобы понять, что означает downvoting ... – sashkello

+0

@sashkello aah true, я забыл этот вариант там :). –

ответ

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']] 
2
import string 
in_list = [4, 2, 3] 
out_list = [[string.uppercase[i]] * j for i, j in enumerate(in_list)] 
print out_list 

Btw, не называйте вашу переменную list, это имя встроенная функция.

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))] 
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']] 
>>> 
Смежные вопросы