2017-06-12 5 views
-4

Ich habe eine Liste von Listen wie:Access-Elemente aus der Liste der Listen, die von Index

[ ['key1287', 'key5842', 'key3209','key5940', 'key42158', 'key43402', 'key31877', 'key51205', 'key2886'], 
    ['key41931', 'key41931', 'key41931', 'key41931'], 
    ['key453','key0090'], 
    ['key45333','key5432'], 
    ['key453313','key51432'] ] 

Wie kann ich die Elemente eines Zugriff von einem des ersten und zweiten Index?

Vielen Dank im Voraus.

EDITED

Angenommen, ich habe eine Liste von vielen Listen. Die Länge der Liste ist unbekannt. Angenommen, 30000. Nach einer Berechnung bin ich am Ende damit, dass ich die Elemente (eins nach dem anderen) des 30er und 31er Index der Liste nehmen möchte. Auch diese Indizes sind nicht bekannt. Ich kenne sie in Laufzeit. Kann mir jemand dabei helfen?

Vielen Dank noch einmal.

+1

Mit einer * verschachtelten * 'for' Schleife ... –

+0

meinst du die ersten 2 Listen in Ihrer großen Liste da? –

+2

'(Element für Unterliste in Listen für Element in Unterliste [: 2])' –

Antwort

2

ein Stück Nehmen Sie an der gewünschten Position und chain die Ergebnisse:

def get_sublist_items(the_list, index=0, n=2): 
    return chain.from_iterable(the_list[index:index + n]) 
0
for key in listoflists[0]+listoflists[1]: 
    # do your magic 
0

Ich würde empfehlen, Kette mit:

from itertools import chain 
superlist = [["a", "b"], ["c", "d"], ["e", "f"]] 
for element in chain(superlist[0], superlist[1]): 
    print(element) 
# or 
for element in chain.from_iterable(superlist[0:2]) 
    print(element) 

sie beide Ausgabe:

a 
b 
c 
d 

Kette iteriert über die erste Liste, bis abgeschlossen ist, beginnt dann mit dem folgenden und so weiter. Dies ist sehr effizient, da Sie keine neue Liste erstellen müssen, die die Summe der Listen darstellt, die Sie durchlaufen möchten.

Update:

Wenn die Indizes variieren können Sie die folgenden Möglichkeiten:

def get_sublist(superlist, index, n): 
    return chain.from_iterable(superlist[index:index + n]) 

for element in get_sublist(superlist, 30, 2): 
    print(element) 
0

Sie wollen, dass die erstes und zweites Element der Unterlisten richtig?

your_list = [ ['key1287', 'key5842', 'key3209','key5940', 'key42158', 'key43402', 'key31877', 'key51205', 'key2886'], 
    ['key41931', 'key41931', 'key41931', 'key41931'], 
    ['key453','key0090'], 
    ['key45333','key5432'], 
    ['key453313','key51432'] ] 
s=[(sublist[0],sublist[1]) for sublist in your_list] 

print(s) 

Ausgang:

[('key1287', 'key5842'), ('key41931', 'key41931'), ('key453', 'key0090'), ('key45333', 'key5432'), ('key453313', 'key51432')] 
Verwandte Themen