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

Python中list索引越界问题及相邻同符号元素查找功能实现求助

解决Python中寻找第一对同号相邻元素的问题

首先,咱们先搞定你遇到的**索引越界(list index out of range)**问题:
你最初的循环用了range(len(my_list)),这会让i遍历从0到len(my_list)-1的所有值。当i等于len(my_list)-1时,i+1就等于len(my_list),而列表的索引是从0到len(my_list)-1的,自然就会越界。解决方法很简单,把循环范围改成range(len(my_list)-1),这样i最大只会到len(my_list)-2,i+1就是合法的最后一个索引啦。

接下来是完善“无符合条件元素对时输出NONE”的逻辑,同时咱们可以优化同号判断的代码,让它更简洁:

完整实现代码

# 处理输入,转换为整数列表
s = input()
my_list_str = s.split()
my_list = [int(beta) for beta in my_list_str]  # 用列表推导式简化代码

found = False  # 标记是否找到符合条件的元素对
for i in range(len(my_list)-1):
    # 同号的两个数相乘结果为正,这样判断比分开写正负更简洁
    if my_list[i] * my_list[i+1] > 0:
        print(my_list[i], my_list[i+1])
        found = True
        break  # 找到第一对就退出循环

# 如果循环结束后没找到,输出NONE
if not found:
    print("NONE")

代码解释

  1. 输入处理优化:用列表推导式替代了原来的循环append,代码更简洁高效。
  2. 索引问题解决:循环范围range(len(my_list)-1)确保不会访问超出列表边界的索引。
  3. 同号判断优化:利用“同号相乘为正”的数学特性,一行代码完成判断,避免重复的条件分支。
  4. 未找到情况处理:通过found标记跟踪是否找到目标元素对,循环结束后根据标记决定是否输出NONE。

测试你的示例列表

对于my_list=[-1,2,-3,-4,-5,1,2],代码会找到第一对同号的-3和-4并打印,符合需求;如果输入的是[1,-2,3,-4]这种没有同号相邻元素的列表,就会输出NONE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:22:35