2017-08-30 2 views
0

Ich habe versucht, einige Elemente an eine Liste list_accepted_outsidenestant anfügen. Wenn ich versuche, die Liste list_accepted_outsidenestant zu drucken, erhalte ich: list_accepted_outsidenestant- [([971, 977, 728, 740], set([728, 977, 971, 740]))]. Die Liste zeigt eine Liste und setzt dieselben Elemente. Kann jemand auf den Fehler hinweisen, den ich mache? Aus diesem Grund erhalte ich einen Fehler: set_accepted_outsidenest_antlist = set(list_accepted_outsidenestant TypeError: unhashable type: 'list'Hinzufügen von Elementen zu einer Liste basierend auf Bedingung

Ich habe einen Teil des Codes nur relevant für die aktuelle Frage gezeigt.

def leo(tag_data): 
    available_ants_outside = [] 
    ori = [] 
    for id, (x, y) in tag_data: 
     available_ants_outside.append(id) 
     if for_coordinates_outside_nest((x, y)) is True: 
      ori.append(id) 
    return ori 


def virgo(tag_data): 
    available_ants_inside = [] 
    list_insidenest_ant_id = [] 
    set_inside_nest_ant_id = set() 
    for id, (x, y) in tag_data: 
     available_ants_inside.append(id) 
     if for_coordinates_inside_nest((x, y)) is True: 
      list_insidenest_ant_id.append(id) 
      set_inside_nest_ant_id = set(list_insidenest_ant_id) 
      return list_insidenest_ant_id,set_inside_nest_ant_id 

def bambino(ori,list_insidenest_ant_id): 
    list_accepted_outsidenestant = []      
    set_accepted_outsidenest_antlist = set() 
    set_accepted_insidenest_antlist = set() 
    if len(list_accepted_outsidenestant) < num_accepted: 
     if (len(ori) > 0) or (len(list_insidenest_ant_id) >0): 
      list_accepted_outsidenestant.extend(ori[0:min(len(ori),    
      num_accepted-len(list_accepted_outsidenestant))]) 
      set_accepted_outsidenest_antlist = set(list_accepted_outsidenestant) 
      print "list_accepted_outsidenestant-" + str(list_accepted_outsidenestant) 
      set_accepted_insidenest_antlist = set(list_insidenest_ant_id) 
    return set_accepted_outsidenest_antlist,set_list_outsideant_id,set_accepted_insidenest_antlist 
+2

Dieser Code ist sehr schwer hinzufügen erweitern zu lesen . Bitte versuchen Sie herauszufinden, wo das Problem auftritt, und das Verhalten unterscheidet sich von dem, was Sie erwarten. – philippd

+0

Mit anderen Worten, erstellen Sie bitte ein [mcve], um Ihr Problem zu demonstrieren. –

+0

@ChristianDean Was ich will ist 'list_accepted_outsidenestant = [971, 977, 728, 740]' – mudaliyar

Antwort

1

Das Problem ist, dass Sie eine Liste an eine Liste anhängen. Sie können entweder die Liste, die Sie hinzufügen möchten iterieren zu:

items_to_add = ori[0:min(len(ori),    
        num_accepted-len(list_accepted_outsidenestant))] 
for item in items_to_add: 
    list_accepted_outsidenestant.append(item) 

Oder die Listen hinzufügen:

list_accepted_outsidenestant = list_accepted_outsidenestant + ori[0:min(len(ori), num_accepted-len(list_accepted_outsidenestant))] 

Oder wie bruno wies darauf hin, (noch besser), die Liste erweitern.

list_accepted_outsidenestant.extend(ori[0:min(len(ori), num_accepted-len(list_accepted_outsidenestant))]) 
+2

oder verwenden Sie 'list.extend (other_list)'. –

+0

Ich wusste das nicht. Danke –

+0

@JanZeiseweis Ich habe den Code wie vorgeschlagen mit 'extent' modifiziert. Aber das Problem besteht immer noch – mudaliyar

0

anhängen Funktion in andere Array hinzufügen ganze
erweitern Funktion Array in vorherigen Array

In [1]: a = [1,2,3,4] 

In [2]: b = [10,9,8,7,6] 

In [3]: a.append(b) 

In [4]: a 
Out[4]: [1, 2, 3, 4, [10, 9, 8, 7, 6]] 

In [5]: c = [1,2,3,4] 

In [6]: c.extend(b) 

In [7]: c 
Out[7]: [1, 2, 3, 4, 10, 9, 8, 7, 6] 

Hoffnung diesen Code Hilfe Sie

+0

Ich habe verstanden, was Sie erwähnten. Ich habe versucht,' extend' zu verwenden statt anhängen, aber immer noch das Problem besteht – mudaliyar

+0

kann bitte erklären, was in etwas einfacherer Weise versuchen, weil Ihr Code sehr schwer zu lesen ist. –

Verwandte Themen