2016-04-13 3 views
0

Wie bekomme ich die Indizes des Wertes, wo die Funktion "startswith()" wahr ist?Wie bekomme ich Indizes von Werten, wo Funktion startswith() wahr ist?

Zum Beispiel: sagen, ich habe eine Liste list = ['gene1' , 'gene2' , '0.3', '', '2.3','','0.4'].

Ich möchte den Wert und den Index dieses Werts für Gen 1 und Gen 2 drucken, wenn der Float mit "0" beginnt.

Im Moment habe ich:

s = line.rstrip("\r\n").split(',') 
e = [a.replace(" ", "") for a in s] 
for i in e: 
    if i.startswith("0."): 
     print "e[0],e[1], i 

Aber das gibt mir nur 1 Wert und die 2-Gene.

möchte ich Print:

gene1, gene2, 2, 0.3, 6, 0.4

wobei 2 der Index ist, wo 0,3 auftritt, und 6 ist der Index in dem 0,4 auftritt.

Antwort

1

Betrachten [(i, s) for i, s in enumerate(e) if s.startswith("0.")]

1

eine Liste Verständnis Verwenden und enumerate:

indices = [index for index, s in enumerate(e) if s.startswith("0.")] 
0

So wie ich es sehe haben Sie zwei Möglichkeiten. Die erste, eine Variable, die kennen den Index, den Sie sich gerade befinden:

s = line.rstrip("\r\n").split(',') 
e = [a.replace(" ", "") for a in s] 
j=0 
for i in e: 
    if i.startswith("0."): 
     print j 
    print i 

Die andere, verändert die Art und Weise Sie iterieren:

s = line.rstrip("\r\n").split(',') 
e = [a.replace(" ", "") for a in s] 
j=0 
for i in range(len(e)): 
    if e[i].startswith("0."): 
     print i 
    print e[i] 

Dies schließt nicht die Kommas drucken, aber Das sollte einfach hinzuzufügen sein, da ich mir nicht sicher bin, ob du die Kommas haben willst, oder das war nur ein Weg, um zu zeigen, was du willst.

Verwandte Themen