arrays - for循环中有两个if语句?
问题描述
class Solution:
def transformArray(self, arr: List[int]) -> List[int]:
x=arr
while True:
f=True
for i in range(1,len(arr)-1):
if arr[i-1]<arr[i] and arr[i]>arr[i+1]:
f=False
x[i]=x[i]-1
print(x[i])
if arr[i-1]>arr[i] and arr[i]<arr[i+1]:
f=False
x[i]=x[i]+1
print(x[i])
#print(x)
x=arr
if f==True:
break
return x
在上面的代码中,两个 if 语句都不会执行,只有第二个会执行。我尝试过使用 elif 但它仍然不起作用。我在这里想念什么?
解决方案
对于您的代码,我考虑了两种类型的示例作为数组列表的输入
例如 1,当 arr = [1, 2, 1, 4] 时,第 2 个元素大于第 1 个和第 3 个元素
第一个 if 语句(如果 arr[i-1]<arr[i] 和 arr[i]>arr[i+1]:) 正在工作,因为两个条件都满足并且它给出了输出 x = [1, 1、1、4]
在示例 2中,当 arr = [3, 2, 3, 4] 时,第 2 个元素小于第 1 个和第 3 个元素
第二个 if 语句(如果 arr[i-1]>arr[i] 和 arr[i]<arr[i+1]:) 正在工作,因为两个条件都满足并且它给出了输出 x = [3, 3、3、4]
因此,if 语句的工作很大程度上取决于数组中的元素。这两个 if 语句的目的是完全相反的。如果一个满足条件,另一个则不满足。
希望我的回答能提供一些澄清。
推荐阅读
- android - 如何在 AsyncTask 中获得临时禁用的首选项?
- android - 我如何接收可打包的包裹?
- java - 保存实体后休眠一对一和多对一关系的奇怪行为
- jquery - 如何将pdfmake脚本添加到数据表
- javascript - 使用 redux 表单时字段中不显示值
- ruby-on-rails - Rails ActiveStorage - 通过 Rails 控制台访问
- linux - Jenkins 显示错误 chrome 无法访问
- php - 图像源在 Laravel 中不可读
- python - Python CSV Writerow 附加一个 for 循环?
- sql - 从 T-SQL 中的列中的表达式获取特定字符串