Python TypeError:-=:';列表';和';列表';
为什么会出现这个错误我需要的是将偶数按大小顺序移动到第二个列表中,然后将奇数按大小顺序从第二个列表移动到第一个列表中。。我在这方面很在行请帮我理解Python TypeError:-=:';列表';和';列表';,python,Python,为什么会出现这个错误我需要的是将偶数按大小顺序移动到第二个列表中,然后将奇数按大小顺序从第二个列表移动到第一个列表中。。我在这方面很在行请帮我理解 def listas_par_impar(lista,lista2): for i in lista2: if (i%10)%2==0: lista=lista+[i] lista2-=[i] else: pass return list
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
lista-=[i]
转换为lista=lista-[i]
。您不能从列表中进行减法运算(您可以将两个iterables连接在一起进行加法运算)
如果要删除元素,可以
lista.pop()
将其删除或切片:lista=lista[:-1]
不能从列表中减去列表
x-=y
是x=x-y
的缩写。虽然+
运算符对列表有效,但-
运算符对列表无效
,以后我建议在询问StackOverflow之前,先用谷歌搜索它们,然后尝试其他解决方案
我需要的是按顺序将偶数移到第二个列表中
大小
首先,对列表进行排序,然后用偶数构建新列表。在本例中,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]
然后,你做同样的事情,对
另一个列表进行排序,然后创建一个只有奇数的新列表,并将其添加到原始列表中。为什么你要先将i
添加到列表中,然后立即将其删除?哦,这是一个错误,即lista2-=[i]为什么要将其从lista2中删除?而在迭代列表A2时修改它是一个坏主意,原因显而易见。(i%10)%2
在数学上等同于i%2
。此外,针对0的测试与只说而不是i%2
相比,也不是非常有吸引力if
语句不需要else
(else:pass
为杂波)是因为lista2 if表示奇数非偶数