政治家的Python规则

2024-10-01 22:27:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学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]]

有人能帮我吗?我怎样才能得到那个结果? 非常感谢。你知道吗


Tags: 代码in示例forreturn规则defrange
3条回答

对于您的代码,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绑定。你知道吗

您正在循环中追加,希望在每次迭代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]]

您几乎是对的,代码中唯一的问题是不断向list2添加元素。相反,您应该每次创建一个新列表:

list1 = []

for i in range(3):
    list2 = []
    for j in range(5, 7):
        list2.append(j)
    list1.append(list2)

相关问题 更多 >

    热门问题