2016-11-01 2 views
0

Ich versuche, eine Funktion zu erstellen, die eine Liste von Zahlen und eine Zahl b übernimmt und die Indizes aller Wertepaare in der Liste, die zu b summieren, ausgibt. Mein Code so enthält weit über die ListenoperationenZurückgeben von Indizes von Wertepaaren

def pairSum(a,b): 
    for i in a: 
     for j in a: 
      if i+j==b: 

es wie dieses

>>>pairSum([7,8,5,3,4,6], 11) 
0 4 
1 3 
2 5 

Hinweis ausgeführt werden soll, dass sie die Positionen der Werte in der Liste zurückgibt und nicht die tatsächlichen Zahlen, und das ist, was ich kann nicht wickle meinen Kopf herum.

+0

Diese Regel als zwei Summenproblem bezeichnet wird. Googeln für zwei Summe gibt Ihnen eine Menge Erklärungen und Lösungen für das Problem. – shaktimaan

+0

Ihr Code ist unvollständig, es wird nichts gedruckt oder zurückgegeben. –

+0

Ich bin mir dessen bewusst. Mein Problem besteht darin, die Ausgabe zurückzugeben. –

Antwort

1

Verwenden enumerate

for i, x in enumerate(a): #i is index of x 
    for j, y in enumerate(a[i+1:], start=i+1): #j is index of y 
     if x+y == b: 
      print(i, j) 

Die a[i+1:] ist Duplikaten zu vermeiden und Werte zu hindern, sich hinzugefügt wird.

Dokumentation: https://docs.python.org/3/library/functions.html#enumerate

+0

Vielen Dank. Deine Antwort hat geholfen. Ich fühle mich dumm, nicht darüber nachzudenken, aufzuzählen. –

Verwandte Themen