TypeError:不支持的操作数类型 - =:'list'和'list'

时间:2013-09-12 04:51:29

标签: python

为什么我得到这个错误我需要的是按照大小顺序将偶数移动到第二个列表,然后从第二个列表移动到第一个奇数也按大小顺序移动..我' ma noob在此请帮助我理解

def listas_par_impar(lista,lista2):
    for i in lista2:
        if (i%10)%2==0:
          lista=lista+[i]
          lista2-=[i]
        else:
            pass

    return lista, lista2

3 个答案:

答案 0 :(得分:3)

  

我需要的是按顺序将偶数移动到第二个列表   大小

首先,对列表进行排序,然后使用偶数构建新列表。在此示例中,i[10,6,5,4,7,8,9,1,3,2]

i.sort() # sorting the list
even = [] # will store the even numbers

for key,value in enumerate(i):
   if not value % 2:
       # if the number is even,
       # remove it from i and add it to
       # the even list
       even.append(i.pop(key))

以上是使用list comprehension的上述示例,这是编写返回列表的循环的简便方法:

>>> i = [10,6,5,4,7,8,9,1,3,2]
>>> i.sort()
>>> even = [i.pop(k) for k,v in enumerate(i) if not v % 2]
>>> even
[2, 4, 6, 8, 10]
>>> i
[1, 3, 5, 7, 9]

要将它们移动到另一个列表,只需将两个列表一起添加:

>>> another_list
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> another_list + even
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 4, 6, 8, 10]

然后,您执行相同的操作,对another_list进行排序,然后创建一个只有奇数的新列表,并将其添加到原始列表中。

答案 1 :(得分:2)

lista -= [i]转换为lista = lista - [i]。你不能从列表中减去(你可以添加 - 并且将两个迭代连接在一起)。

如果您要删除元素,可以lista.pop()将其删除或切片:lista = lista[:-1]

答案 2 :(得分:2)

您无法从列表中减去列表。

x -= yx = x - y的简写。虽然+运算符适用于列表,但-却没有。

You appear to have trouble with error messages,将来我建议首先使用Google搜索并尝试其他解决方案,然后再询问StackOverflow。