栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我的for循环跳过列表中的元素?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我的for循环跳过列表中的元素?

您尝试执行的操作将不起作用,因为您在迭代列表时正在修改列表。说当前的“指针”指向第一个元素。现在,您弹出第一个,因此指针位于第二个。但是,当循环前进时,指针将移至第三个指针,而第二个指针将被跳过。

似乎您想从列表中找到组合。您可以尝试其他几种方法:

  • 最接近当前方法:使用

    while
    循环而不是
    for
    循环

    while l:first = l.pop(0)for second in l:    print(first, second)
  • 或者,您可以仅迭代索引而不是列表本身:

    for i in range(len(l)):for k in range(i+1, len(l)):    print(l[i], l[k])
  • 或者只是使用

    itertools.combinations

    import itertools

    for first, second in itertools.combinations(l, 2):
    print(first, second)


但是,您可以做得更好。由于您正在寻找一对加起来等于某个目标编号的数字,因此只需从目标中减去第一个即可获得第二个,然后查看第二个数字是否在数字列表中。使用a

set
可以使查询在恒定时间内进行,从而将您的整体时间复杂度从O(n²)降低到O(n)。

numbers = set([1,2,5,8,13,15,26,38])target = 10for first in numbers:    second = target - first    if second > first and second in numbers:        print(first, second)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号