开发者社区> 问答> 正文

len为什么不返回正确的值?

def dbl_linear(n): u=[1] i=0 for a in u: u.append((2*+1)) u.append((3*+1)) u=set(u) u=list(u)
if len(u)>=n: print(len(u))
break return len(u)

我希望这段代码返回列表u中的n个元素,但这没有发生。有人可以帮忙吗?我给了输入n = 20.len(u)分别是15或7。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 21:41:07 442 0
1 条回答
写回答
取消 提交回答
  • 修改要迭代的对象基本上是未定义的行为,您无法假设迭代是否会考虑新项目,尤其是面对调整大小(list为O(1)摊销的追加,因为它是保留空间上的O(1),但他们通常需要重新分配整个内容,以便为新元素腾出更多空间)。更不用说您只在第一次迭代中修改初始列表,之后再更新其他不相关的列表。

    甚至没有理由在u中使用,只需使用一个无限循环(并且可能记得最后一个元素,因为通过set进行唯一化会加扰列表,或者只是在插入之前检查该元素是否已经存在, in中的为O(n),但set(a)和list(a)也是如此。

    回答来源:stackoverflow

    2020-03-23 21:41:14
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载