0

为什么我得到这个错误我需要的是将偶数按大小顺序移动到第二个列表,然后从第二个列表移动到第一个奇数也按大小排序..我是这方面的菜鸟,请帮忙我明白

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
4

3 回答 3

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))

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

>>> 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,然后创建一个只有奇数的新列表,并将其添加到原始列表中。

于 2013-09-12T05:07:41.153 回答
2

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

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

于 2013-09-12T04:53:22.450 回答
2

您不能从列表中减去列表。

x -= y是 的简写x = x - y。虽然+运算符确实适用于列表,-但 不是。

您似乎遇到了错误消息的问题,将来我建议先在谷歌上搜索它们并在询问 StackOverflow 之前尝试替代解决方案。

于 2013-09-12T04:54:43.237 回答