【发布时间】:2018-04-15 23:36:07
【问题描述】:
将列表传递给函数时遇到问题。它似乎对列表变量有全局影响,但我没有在我的函数中将它声明为全局。谁能告诉我发生了什么以及如何解决它?
def a_Minus_b(a,b):
for i in range(len(b)):
print("a= ", a)
if b[i] in a:
a.remove(b[i])
return a
x = [1,2,3,4]
a_Minus_b(x,x)
a= [1, 2, 3, 4]
a= [2, 3, 4]
a= [2, 4]
错误:
Traceback (most recent call last):
File "<pyshell#115>", line 1, in <module>
a_Minus_b(x,x)
File "<pyshell#112>", line 4, in a_Minus_b
if b[i] in a:
IndexError: list index out of range
【问题讨论】:
-
请看:youtube.com/watch?v=_AEJHKGk9ns,值得花时间。
-
不要按索引循环。
for i in range(len(iterable)): iterable[i]是 python 中的反模式。就做for value in iterable -
虽然我强烈推荐完整的视频,但处理函数的部分从15:50开始
-
容器,如
lists,在 Python 中通过引用有效地传递,所以你的函数会改变它传递的那个。
标签: python python-3.x list global operand