python - 在python相邻数字问题中列出超出范围的问题
问题描述
我有一个问题要求比较列表中的 2 个数字,特别是相邻数字是正数还是负数但是我被困在问题的第一部分。我的想法是使用其索引将第一个数字与第二个数字进行比较,因此 i+1,但不可避免地会超出范围。
我在这里遗漏了一些东西,不胜感激。
my_list=[-1,2,-3,-4,-5,1,2]
for i in range(len(my_list)):
print (my_list[i])
print (my_list[i+1])
我一直在努力,这是完整的问题
给定一个数字序列,找到并打印第一对具有相同符号的相邻元素。如果没有这样的对,则打印 NONE。
zip
在这种情况下我不允许使用。
但是,如果没有配对,我不能做最后一点,它要求 pro print none
s = input()
my_list_str = s.split()
my_list = []
for beta in my_list_str:
my_list.append(int(beta))
for i in range(len(my_list)-1):
if my_list[i]>0 and my_list[i+1] >0:
print (my_list[i], end =' ')
print (my_list[i+1])
break
elif my_list[i]<0 and my_list[i+1] <0:
print (my_list[i], end =' ')
print (my_list[i+1])
break
解决方案
两点:
- 大多数情况下,使用索引来迭代列表被认为是“非 Python 的”
for
-loop 可以选择使用 -condition 关闭:条件中else
的代码else
仅在for
-loop 没有通过break
因此,您可以尝试以下方法:
for first, second in zip(my_list[:-1], my_list[1:]):
if (first < 0 and second < 0) or (first > 0 and second > 0):
print(first, second)
break
else:
print("NONE")
编辑:如果你需要使用索引,那么你可以这样做:
for i in range(len(my_list) - 1):
first, second = my_list[i], my_list[i+1]
if (first < 0 and second < 0) or (first > 0 and second > 0):
print(first, second)
break
else:
print("NONE")
如果您不允许使用 -loop 的else
-option for
,那么您可以尝试:
found = False
for i in range(len(my_list) - 1):
first, second = my_list[i], my_list[i+1]
if (first < 0 and second < 0) or (first > 0 and second > 0):
print(first, second)
found = True
break
if not found:
print("NONE")
推荐阅读
- javascript - “CDK 部署”未启动
- gnuradio - Gnuradio - 无法解码 ASK
- excel - 将行与 Excel 中的范围字符连接起来
- google-cloud-sql - 无法从 Cloud Data Fusion 连接到 Cloud SQL for SQL Server
- javascript - 如何在 NodeJS 中格式化以 response.write() 编写的行?
- java - 如何使用 Archunit 仅测试具有某些 Spring 配置文件的类
- python - 如何组合两个结果并将其传递到 apache-beam 管道中的下一步
- angular - 如果该组件已经存在一个类,则 routerLinkActive 类不适用
- r - 用千位分隔符格式化 tibble 中的数值会产生错误
- spring - Spring数据redis中基于整数比较的过滤器