【问题标题】:How can I number each element in my list for a given range n?如何为给定范围 n 对列表中的每个元素进行编号?
【发布时间】:2019-11-11 18:17:55
【问题描述】:

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

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', 'GRAPE1', 'GRAPE2', 'APPLE0', 'APPLE1', 'APPLE2', 'ORANGE0', 'ORANGE1', 'ORANGE2', 'BANANA0', 'BANANA1', 'BANANA2', 'PEAR0', 'PEAR1', 'PEAR2']

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

【问题讨论】:

  • 询问家庭作业时 (1) 注意你的学校政策:在这里寻求帮助可能构成作弊。 (2) 指定问题是家庭作业。 (3) 善意尝试首先自己解决问题(在问题中包含您的代码)。 (4) 询问您现有实施的具体问题;见Minimal, complete, verifiable example。此外,here 是提出家庭作业问题的指南。
  • 你是对的。我已经附上了到目前为止的代码。感谢您的提示!

标签: python list function for-loop range


【解决方案1】:

您有一个嵌套列表:您还需要在循环中处理您的追加,为每个新的外层列表清除累积列表。

fruits = [ ['GRAPE', 'APPLE'], ['ORANGE'], ['BANANA', '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', 'GRAPE1', 'GRAPE2', 'APPLE0', 'APPLE1', 'APPLE2'],
 ['ORANGE0', 'ORANGE1', 'ORANGE2'],
 ['BANANA0', 'BANANA1', 'BANANA2', 'PEAR0', 'PEAR1', 'PEAR2']]

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多