当前位置: 首页 > 知识库问答 >
问题:

Python递归追加列表函数

易宣
2023-03-14

有递归函数的问题,应该相对简单做,但似乎不能得到正确的。

我有一个文件夹结构,它的文件夹可以包含其他文件夹、图像或文件。每个文件夹都有权限。我想让我的函数递归地构建一个与每个文件夹关联的权限列表。

def get_child_perms(self, folder, request, perm_list):
        # Folder contains other folders
        if folder.get_children():
            # For every sub-folder
            for subfolder in folder.get_children():
                return perm_list.append(self.get_child_perms(subfolder, request, perm_list))
        else:
            # If folder doesn't have sub-folders containing folders
            return [folder.has_read_permission(request)]
Folder (allowed) - Wont check this one
|_First Folder (allowed)
| |_First sub Folder (restricted)
| | |_File
| | |_File
| | |_Image
| |__Second Sub Folder (allowed)
|_Second Folder (allowed)

改了号,

def get_child_perms(self, folder, request, perm_list):
        if folder.get_children():
            for subfolder in folder.get_children():
                perm_list.append(self.get_child_perms(subfolder, request, perm_list))
            return perm_list
        else:
            return [folder.has_read_permission(request)]

得到:

[[True], [...], [True], [...], [...], [True], [True], [True], [True], [True], [True], [True], [True], [...], [True], [...]]

 Admin
 -Folder 1
   - Files
 -Folder 2
   - Files
 -Folder 3
   - Files 
 -Folder 4
   - SubFolder 1
      -SubSubFolder 1
         - Files
      - Files
   - SubFolder 2
      - SubSubFolder 2
           - Files
      - Files
 -Folder 5
   - SubFolder 3
       - Files
   - SubFolder 4
       - Files
   - SubFolder 5
       -Files
   - Files
 -Folder 6
   - Files
 -Folder 7
   - SubFoler 6
       - Files
   - Files
 -Folder 8
   - Files

共有1个答案

宰父俊民
2023-03-14
for subfolder in folder.get_children():
    perm_list.append(self.get_child_perms(subfolder, request, perm_list))
return perm_list

.append就位。它不返回任何东西。所以您得到的是none

 类似资料:
  • 一切似乎都很好,但是这一行有一个错误: 错误是:构造函数ArrayList(Arrays.asList(i), ArrayList)未定义 我知道错误是说数组的asList方法不接受ArrayList,但是我如何在列表中添加因式分解返回的项呢?这种递归真的把我搞糊涂了

  • 问题内容: 我正在编写一个包含10个存储桶列表的简单哈希表。使用内置函数计算索引,然后对表大小取模。但是,当我尝试将对象附加到该索引的存储桶列表时,它会附加到每个存储桶列表。我尝试用不同的方式定义add_HT,但我一直得到相同的结果。我究竟做错了什么? 问题答案: 使指向 同一列表 的指针数量增加。这里不是问题。您需要定义为。

  • 问题内容: 是否可以在Python中定义递归列表理解? 可能是一个简单的示例,但类似于: 这样有可能吗? 问题答案: 不,没有(记录,可靠,稳定,… ;-)引用“当前理解”的方法。您可以只使用一个循环: 当然,这是非常昂贵的(O(N平方)),因此您可以使用辅助工具对其进行优化(我假设将项目的顺序与中的项目顺序保持一致,否则可以做到;-)。 ..: 对于非常长的列表(O(N)而不是N平方),这要快得

  • 考虑Python中的这个基本递归: 根据斐波那契数列的(n-1)(n-2)函数,这是有道理的。 Python如何执行包含另一个递归的递归,这个递归不在同一代码行内,而是在同一代码行内?“finobacci(number-1)”是否完成所有递归,直到它到达“1”,然后它对“fibonacci(number-2)”做同样的事情,并将它们相加? 作为比较,下面的递归函数将一个数“x”提升为“y”的幂,我

  • 问题内容: def foo(a): a.append(1) if len(a) > 10: print a return a else: foo(a) 为什么此递归函数返回None(请参见下面的脚本)?我不太明白我在做什么错。 问题答案: 您不会在该子句中返回任何内容:

  • 我有一个任意嵌套的迭代程序,如下所示: 我想在不改变结构的情况下映射一个函数。例如,我可能希望将所有数字转换为字符串,以获取 有什么好办法吗?我可以编写自己的方法来手动遍历,但我想知道是否有一种通用的方法来映射递归迭代表。