python for跳过_python – 为什么我的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)

但是,你可以做得更好.由于您正在寻找一对加起来某个目标数的数字,只需从目标中减去第一个以获得第二个数字,然后查看第二个数字是否在数字列表中.使用一个集合可以在恒定时间内进行查找,从而将总体时间复杂度从O(n²)减少到O(n).

numbers = set([1,2,5,8,13,15,26,38])

target = 10

for first in numbers:

second = target - first

if second > first and second in numbers:

print(first, second)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值