for语句的Python规则
我刚开始学习Python。所以我是初学者。我有一个关于“声明”的问题。我想我仍然不知道它的规则。 请看下面 例如:for语句的Python规则,python,for-loop,Python,For Loop,我刚开始学习Python。所以我是初学者。我有一个关于“声明”的问题。我想我仍然不知道它的规则。 请看下面 例如: list1 = [] list2 = [] def forStatement(): for i in range(3): for j in range(5, 7): list2.append(j) list1.append(list2) return list1 我想要的结果是 [[5, 6], [5, 6
list1 = []
list2 = []
def forStatement():
for i in range(3):
for j in range(5, 7):
list2.append(j)
list1.append(list2)
return list1
我想要的结果是
[[5, 6], [5, 6], [5, 6]]
但当我运行代码时,结果是这样的
[[5, 6, 5, 6, 5, 6], [5, 6, 5, 6, 5, 6], [5, 6, 5, 6, 5, 6]]
有人能帮我吗?我怎样才能得到那个结果?
非常感谢。您几乎是对的,您的代码唯一的问题是您一直在向
列表2
添加元素。相反,您应该每次创建一个新列表:
list1 = []
for i in range(3):
list2 = []
for j in range(5, 7):
list2.append(j)
list1.append(list2)
您正在循环中追加,希望在每次迭代i时重置list2
list1 = []
for i in range(3):
list2 = []
for j in range(5, 7):
list2.append(j)
list1.append(list2)
>>> print list1
[[5, 6], [5, 6], [5, 6]]
对于您的代码,
list1
是一个容器对象,它引用了绑定到list2
的对象。(通常,为了简洁起见,这样的对象被称为list2
)在代码执行之后,list1
最终包含三个元素(即对list2
的引用),而list2
显然包含三个连续5、6的三重(外部循环执行了3次)(每次执行内部循环都会将5和6追加到list2
)
以下代码应该是您所期望的:
list1 = []
list2 = None
for i in range(3):
list2 = [] # To create a new empty list object and let it bound to the variable list2 every outer loop.
for j in range(5, 7):
list2.append(j)
list1.append(list2)
在这个代码中,<代码> > List1包含三个不同对象的元素。但是它们过去都绑定到变量<代码> List2。这是Python的常见问题,我相信有一个重复的…可能的副本,如果我的答案帮助解决了你的问题,请考虑把它标记为被接受的答案。谢谢