如何为给定范围n编号列表中的每个元素?

我正在尝试为给定功能的给定范围对嵌套列表中的元素进行编号:

numbered_elements(list,n)

使用以下列表作为示例:

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

然后

n = 3

我想要一个将列表fruitsn=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','APPLE2','ORANGE0','ORANGE2','BANANA0','PEAR2']

所以我想弄清楚的是如何仍然将其保留为嵌套列表。

kdokdokdop 回答:如何为给定范围n编号列表中的每个元素?

您可以对列表列表进行简单的迭代,并重复每个元素'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']]
,

您有一个嵌套列表:您还需要循环处理附加操作,为每个新的外层列表清除积聚列表。

fruits = [ ['GRAPE','PEAR'] ]
n = 3

roster = []    # Clear the final output list only once
for l in fruits:
    empty = []          # Clear the suffix list for each new sub-list of fruit
    for element in l:
        for a in range(n):
            empty.append(element + str(a))
    roster.append(empty)

print(roster)

输出(为便于阅读,插入了换行符):

[['GRAPE0','PEAR2']]
本文链接:https://www.f2er.com/3122148.html

大家都在问