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

如何用Python仅for循环找出列表中唯一奇偶性不同元素的索引

嘿,我来帮你解决这个问题!既然你只能用for循环,而且已经用到了enumerate,那我们可以分两步来实现,完全符合你的需求:

实现思路与代码

因为题目明确说只有一个元素的奇偶性和其他不同,所以列表里要么只有1个奇数,要么只有1个偶数。我们可以先统计两类数的数量,再精准定位目标元素的索引。

下面是完整的代码:

nums = [2, 4, 6, 8, 7]  # 换成[1, 3, 4, 5]也能正常运行

# 第一步:统计奇数和偶数的总数
odd_count = 0
even_count = 0
for num in nums:
    if num % 2 == 1:
        odd_count += 1
    else:
        even_count += 1

# 第二步:找到目标元素的索引
# 先确定我们要找的是奇数还是偶数
target_parity = 1 if odd_count == 1 else 0

for i, num in enumerate(nums):
    if num % 2 == target_parity:
        print(i)
        break  # 找到就停止循环,不用浪费资源

代码拆解说明

  1. 统计数量:第一个for循环遍历整个列表,分别累加奇数和偶数的个数。因为题目保证只有一个异类,所以这两个数里必然一个是1,另一个是len(nums)-1。
  2. 锁定目标奇偶性:用一个简单的三元判断,确定我们要找的是奇数(值为1)还是偶数(值为0)。
  3. 查找索引:第二个for循环用enumerate同时拿到元素的索引和值,找到符合目标奇偶性的元素后,打印索引并退出循环。

如果你想尝试用类似count的思路简化统计步骤,也可以这样写(本质还是基于循环的生成器表达式,符合要求):

nums = [1, 3, 4, 5]
# 统计奇数个数:奇数%2=1,求和就是奇数的数量
odd_count = sum(num % 2 for num in nums)
even_count = len(nums) - odd_count

这样代码更简洁,效果和之前的统计逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:21:34