Ein Peak-Find-Programm in einer 1-D-Python-Liste, die einen Peak mit seinem Index zurückgibt, wenn für einen Index 'x' in der Liste 'arr' if (arr [x] > arr [x + 1] und arr [x]> arr [x-1]). Sonderfall Fall 1: Im Falle des ersten Elements. Vergleichen Sie es nur mit dem zweiten Element. Wenn arr [x]> arr [x + 1], Peak gefunden. Fall 2: Letztes Element. Vergleiche mit dem vorherigen Element. Wenn arr [x]> arr [x-1], Peak gefunden. Unten ist der Code. Aus irgendeinem Grund funktioniert es nicht, wenn der Peak bei Index = 0 ist. Er arbeitet perfekt für den Peak in der Mitte und Peak am Ende. Jede Hilfe wird sehr geschätzt.Ein einfaches 1-D-Peak-Programm in Python
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
Dank James für die Klarstellung. –
Kein Problem - es wäre toll, wenn Sie die Antwort akzeptieren könnten, indem Sie auf das Häkchen auf der linken Seite der Antwort klicken, wenn Ihnen das hilft! – James
Sicher, aber SO bittet mich, 8 Minuten zu warten, bevor ich akzeptiere –