Как можно скопировать строку в списке? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть список

list1=['a','b','c]

Я хочу скопировать каждую строку в списке

вот так

list2=['a','a','b','b','c','c']
list3=['a','a','a','b','b','b','c','c','c']

но когда я использую этокод

list2=[x*2 for x in list1]

Я получаю

list2=['aa','bb','cc]

Как я могу изменить свой код для достижения моего результата?

Ответы [ 3 ]

1 голос
/ 07 ноября 2019

без использования itertools, это можно сделать с помощью понимания вложенного списка, как показано ниже

list1=['a','b','c']

print([y for x in list1 for y in [x]*2])
# ['a', 'a', 'b', 'b', 'c', 'c']

print([y for x in list1 for y in [x]*3])
# ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']
1 голос
/ 07 ноября 2019

Я бы использовал itertools.chain вместе с itertools.repeat:

from itertools import chain, repeat

chars = ['a', 'b', 'c']
repeat_count = 3

list(chain.from_iterable(repeat(char, repeat_count) for char in chars))

Вывод:

['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']
0 голосов
/ 07 ноября 2019

Вы можете использовать второй цикл for с функцией range():

lst = ['a', 'b', 'c']

[i for i in lst for _ in range(2)]
# ['a', 'a', 'b', 'b', 'c', 'c']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...