当前位置: 首页 > 面试题库 >

Python中的递归列表理解?

百里京
2023-03-14
问题内容

是否可以在Python中定义递归列表理解?

可能是一个简单的示例,但类似于:

nums = [1, 1, 2, 2, 3, 3, 4, 4]
willThisWork = [x for x in nums if x not in self] # self being the current comprehension

这样有可能吗?


问题答案:

不,没有(记录,可靠,稳定,… ;-)引用“当前理解”的方法。您可以只使用一个循环:

res = []
for x in nums:
  if x not in res:
    res.append(x)

当然,这是非常昂贵的(O(N平方)),因此您可以使用辅助工具对其进行优化set(我假设将项目的顺序与中的项目顺序保持res一致nums,否则set(nums)可以做到;-)。
..:

res = []
aux = set()
for x in nums:
  if x not in aux:
    res.append(x)
    aux.add(x)

对于非常长的列表(O(N)而不是N平方),这要快得多。

编辑 :在Python
2.5或2.6中,vars()['_[1]']可能实际上可以以您想要的角色工作self(对于非html" target="_blank">嵌套listcomp)…这就是为什么我通过澄清没有
记录,可靠,稳定的 方式访问“列表”来限定我的陈述的原因” –特殊的,未记录的“名称”
'_[1]'(故意选择不是有效的标识符;-)是“实现工件”的顶点,任何依赖于它的代码都应摆脱困境;-) 。



 类似资料:
  • 我是编程新手,从Python开始。我的问题是关于链表,我为链表写了一个类,我需要做的是有一个函数,一个输入作为指向列表头部的引用。据我所知,'linked_list.Head',其中linked_list是有问题的列表的名称。具体使用递归,我试图找到列表的长度作为这个函数的输出。下面是我的代码,我不太明白如何移动到下一个节点,并在本例中使用递归返回节点数。

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

  • 有递归函数的问题,应该相对简单做,但似乎不能得到正确的。 我有一个文件夹结构,它的文件夹可以包含其他文件夹、图像或文件。每个文件夹都有权限。我想让我的函数递归地构建一个与每个文件夹关联的权限列表。 改了号, 得到:

  • 我试图使用递归打印链表中每个节点中的数据,但是我得到了越界错误,所以我认为递归函数有问题。 这是头文件: 基本上,我从公共函数调用私有助手函数。下面是两个函数的代码: 我认为问题出在if块中,因为如果没有下一个节点,我需要停止,但在返回之前还需要打印当前节点中的数据,但因为我已经调用了

  • 我需要为链表队列实现一个toString()递归方法。我知道我的toString方法在我上周做的一个链表实现中工作得很好,所以我在处理它的队列方面出了问题。 我的QueueList的toString方法: 以及我的构造函数,例如QueueList: 我试图用这个测试看看里面发生了什么: 与输出 我意识到这是因为我说的是前面的在方法的递归部分,但即使我将其更改为,我的输出是 这可能与我的排队和退队方

  • 你能帮我做这个吗 找出n到达M的途径有多少 范例=