2017-08-30 14 views
0

リストにいくつかの要素を追加しようとしましたlist_accepted_outsidenestant。リストlist_accepted_outsidenestantを印刷しようとすると、list_accepted_outsidenestant- [([971, 977, 728, 740], set([728, 977, 971, 740]))]と表示されます。リストにはリストが表示され、同じ要素が設定されています。誰も私がやっている間違いを指摘できますか?このため、私はエラーが発生しています: set_accepted_outsidenest_antlist = set(list_accepted_outsidenestant TypeError: unhashable type: 'list'条件に基づいてリストに要素を追加する

私は現在の質問にのみ関連するコードの一部を示しています。

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

このコードは非常に読みにくいです。問題が導入された場所でトレースしてください。その動作は期待どおりではありません。 – philippd

+0

つまり、問題を示すために[mcve]を作成してください。 –

+0

@ChristianDean私がしたいのは 'list_accepted_outsidenestant = [971、977、728、740]' – mudaliyar

答えて

1

問題は、リストをリストに追加することです。 あなたが追加したいリストを反復処理することができ、次のいずれか

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) 

またはリストを追加します。

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

それともブルーノとして(より良い)を指摘し、リストを拡張します。

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

または 'list.extend(other_list)'を使用してください。 –

+0

これは分かりませんでした。ありがとう –

+0

@JanZeiseweis私は 'extent'を使って提案されたコードを修正しました。しかし、問題は依然として続きます – mudaliyar

0

機能は、以前の配列に

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] 

希望を配列を追加し、このコードのヘルプを拡張する拡張機能は他のアレイ
に全体の追加追加します

+0

あなたが言ったことを理解しました。追加するのではなく、まだ問題が残っている – mudaliyar

+0

あなたのコードは非常に読みにくいので、少し簡単にしようとしていることを説明してください。 –

関連する問題