2016-10-12 21 views
-2

Ich habe eine lange Liste mit Elementen von 0 bis 100. Was ich tun möchte, ist alle Positionen zu finden, wo meine Elemente Werte annehmen [0,2]. Dann finden Sie alle Positionen der Werte zwischen 2 und 4, usw. bis zu 98 und 100.Python: Wie erstellt man Unterlisten durch die Schleife?

Nennen wir die Liste mit den Werten '' Liste ''. Und nennen wir die resultierende Liste p_x. Wo x angibt, in welchem ​​Intervall wir die Positionen von finden.

ich es geschafft, zu bekommen, was ich auf diese Weise wollen: p_61 = N.where ((Liste> = 60) & (Liste < = 62))

Meine Frage ist nun: wie diese i do-Schleife, so dass ich als Ergebnis alle p_x's bekomme, die ich will?

+0

Ist dies mit Numpy? (weil Sie 'where' verwenden) –

+0

Ja, ich habe numpy verwendet. –

Antwort

0
import itertools 

l = list(range(10)) 

## If you just want the values: 
print([(x,y) for (x,y) in itertools.combinations(l, 2) if abs(x-y)==2]) 

## If you want the positions: 
for i, x in enumerate(l): 
    for j, y in enumerate(l): 
     if j <= i: 
      continue 
     if abs(x-y) == 2: 
      print(i, j) 

## If you want them stored in lists in a dictionary: 
d = {} 
for i, x in enumerate(l): 
    for j, y in enumerate(l): 
     if j <= i: 
      continue 
     if abs(x-y) == 2: 
      k = 'p_{}'.format(x+1) 
      try: 
       d[k].append((i,j)) 
      except KeyError: 
       d[k] = [(i,j)] 
Verwandte Themen