2017-08-30 70 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

可以请解释什么尝试以更简单的方式,因为你的代码是非常难以阅读。 –