Как мне нумеровать каждый элемент в моем списке для заданного диапазона n? - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь нумеровать элементы в моем вложенном списке для заданного диапазона для данной функции:

numbered_elements(list, n)

Используйте следующий список в качестве примера:

fruits = [ ['GRAPE', 'APPLE'], ['ORANGE'], ['BANANA', 'PEAR'] ]

И,

n = 3

Мне нужна функция, которая будет принимать в качестве входных данных список fruits и n=3 и выводить следующее:

[ ['GRAPE0', 'GRAPE1', 'GRAPE2', 'APPLE0', 'APPLE1', 'APPLE2'], ['ORANGE0', 'ORANGE1', 'ORANGE2'], ['BANANA0', 'BANANA1', 'BANANA2', 'PEAR0', 'PEAR1', 'PEAR2'] ] 

Вот код, который у меня есть на данный момент:

empty = []
for l in fruits:
    for element in l:
        for a in range(n):
            empty.append(element + str(a))
return empty

Эта функция возвращает:

  ['GRAPE0', 'GRAPE1', 'GRAPE2', 'APPLE0', 'APPLE1', 'APPLE2', 'ORANGE0', 'ORANGE1', 'ORANGE2', 'BANANA0', 'BANANA1', 'BANANA2', 'PEAR0', 'PEAR1', 'PEAR2']

Итак, я пытаюсь понять, как сохранить его в виде вложенного списка.

1 Ответ

0 голосов
/ 11 ноября 2019

Вы можете выполнить простую итерацию по списку списков и повторять каждый элемент 'n' раз:

def numbered_elements(lst, n):
    return [[f'{y}{i}' for y in x for i in range(n)] for x in lst]

Использование :

>>> fruits = [['GRAPE', 'APPLE'], ['ORANGE'], ['BANANA', 'PEAR']]
>>> numbered_elements(fruits, 3)
[['GRAPE0', 'GRAPE1', 'GRAPE2', 'APPLE0', 'APPLE1', 'APPLE2'], ['ORANGE0', 'ORANGE1', 'ORANGE2'], ['BANANA0', 'BANANA1', 'BANANA2', 'PEAR0', 'PEAR1', 'PEAR2']]
...