【发布时间】:2016-11-28 05:03:58
【问题描述】:
一维 python 列表中的峰值查找程序,如果 (arr[x] > arr[x+1] 和 arr[ x] > arr[x-1])。 特殊情况 情况 1:如果是第一个元素。仅将其与第二个元素进行比较。如果 arr[x] > arr[x+1],找到峰值。 案例 2:最后一个元素。与前一个元素进行比较。如果 arr[x] > arr[x-1],找到峰值。 下面是代码。 由于某种原因,在峰值位于索引 = 0 的情况下它不起作用。它完美地适用于中间的峰值和末端的峰值。 非常感谢任何帮助。
import sys
def find_peak(lst):
for x in lst:
if x == 0 and lst[x] > lst[x+1]:
print "Peak found at index", x
print "Peak :", lst[x]
return
elif x == len(lst)-1 and lst[x] > lst[x-1]:
print "Peak found at index", x
print "Peak :", lst[x]
return
elif x > 0 and x < len(lst)-1:
if lst[x] > lst[x+1] and lst[x] > lst[x-1]:
print "Peak found at index", x
print "Peak :", lst[x]
return
else :
print "No peak found"
def main():
lst = []
for x in sys.argv[1:]:
lst.append(int(x))
find_peak(lst)
if __name__ == '__main__':
main()
Anuvrats-MacBook-Air:Python anuvrattiku$ python peak_finding_1D.py 1 2 3 4
Peak found at index 3
Peak : 4
Anuvrats-MacBook-Air:Python anuvrattiku$ python peak_finding_1D.py 1 2 3 4 3
Peak found at index 3
Peak : 4
Anuvrats-MacBook-Air:Python anuvrattiku$ python peak_finding_1D.py 4 3 2 1
No peak found
【问题讨论】:
标签: python arrays python-2.7 python-3.x