You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表操作需求:查找首个奇数后首个偶数并返回索引间距

解决Python列表中查找奇偶索引间距的问题

Got it,这个需求逻辑很明确,我给你拆解下实现思路,再附上完整代码和测试案例:

核心思路

  • 第一步:遍历列表,定位第一个奇数的索引。如果遍历完都没找到,直接返回-1
  • 第二步:从第一个奇数的下一个位置开始,继续遍历,定位第一个偶数的索引。如果没找到,同样返回-1
  • 第三步:如果两个元素都找到,返回它们的索引差值(偶数索引 - 奇数索引)

完整代码实现

def find_odd_even_gap(numbers):
    # 查找第一个奇数的索引
    first_odd_idx = None
    for idx, num in enumerate(numbers):
        if num % 2 != 0:
            first_odd_idx = idx
            break
    # 没找到奇数,返回-1
    if first_odd_idx is None:
        return -1
    
    # 从奇数的下一个位置开始找第一个偶数
    first_even_after_idx = None
    for idx in range(first_odd_idx + 1, len(numbers)):
        if numbers[idx] % 2 == 0:
            first_even_after_idx = idx
            break
    # 没找到符合条件的偶数,返回-1;否则返回索引差
    return first_even_after_idx - first_odd_idx if first_even_after_idx is not None else -1

测试案例验证

我们来跑几个典型场景看看结果:

# 正常情况:第一个奇数后有偶数
print(find_odd_even_gap([2,4,3,6,8]))  # 输出1(3的索引是2,之后第一个偶数6的索引是3,3-2=1)

# 没有奇数的情况
print(find_odd_even_gap([2,4,6,8]))    # 输出-1

# 奇数后没有偶数的情况
print(find_odd_even_gap([1,3,5,7]))    # 输出-1

# 第一个元素就是奇数,之后有偶数
print(find_odd_even_gap([5,2,3,4]))    # 输出1(5的索引0,之后第一个偶数2的索引1,1-0=1)

这样写的代码逻辑清晰,边界情况也都覆盖到了,你可以直接拿去用,有调整需求的话随时改就行~

内容的提问来源于stack exchange,提问作者JenkinsMa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:56:17