2017-06-28 6 views
0

Ich habe eine Liste von Objekten, von denen jedes eine Liste von Dingen hat. Ich möchte eine Liste der Dinge erstellen, die in allen Objekten enthalten sind. Gibt es eine mehr pythische Art, dies zu tun?Erstellen Sie eine Liste von Objekten aus Objekten

class Holder(object): 
    def __init__(self, things): 
     self.things = things 

holder_one= Holder([1, 2]) 
holder_two = Holder(['a', 'b']) 

holders = [holder_one, holder_two] 

all_things = [] 
for holder in holders: 
    for thing in holder.things: 
     all_things.append(thing) 
print all_things 

Antwort

1

Sie können entweder:

  1. Make Holder vererben list dann diese ziemlich trivial wird.

  2. Verwenden extend statt append, mit dem Sie eine explizite Schleife sparen:

    all_things = [] 
    for holder in holders: 
        all_things.extend(holder.things) 
    print all_things 
    
+0

Dank, aber der eigentliche Halter Klasse tun mehr weit als nur eine Liste halten. Das Beispiel wurde für die Zwecke der Frage stark vereinfacht und es wäre für Holder nicht praktikabel, die Liste zu übernehmen – Psionman

+0

Ok, also benutze 'extend' .. – DeepSpace

+0

Danke. Macht den Trick – Psionman

Verwandte Themen