如何用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 # 找到就停止循环,不用浪费资源
代码拆解说明
- 统计数量:第一个for循环遍历整个列表,分别累加奇数和偶数的个数。因为题目保证只有一个异类,所以这两个数里必然一个是1,另一个是
len(nums)-1。 - 锁定目标奇偶性:用一个简单的三元判断,确定我们要找的是奇数(值为1)还是偶数(值为0)。
- 查找索引:第二个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
相关产品推荐
相关产品推荐

