for语句的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

我刚开始学习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], [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的常见问题,我相信有一个重复的…可能的副本,如果我的答案帮助解决了你的问题,请考虑把它标记为被接受的答案。谢谢