gpt4 book ai didi

python - 了解这些 Python for 循环创建列表列表的逻辑

转载 作者:行者123 更新时间:2023-12-01 02:14:14 25 4
gpt4 key购买 nike

Uber新手问题。我以为我已经结束了,但我被困住了。

首先我会告诉你我想要实现的目标。 Newbie Challenge question. (credit: V. Anton Spraul)

您将从图片中看到,我正在尝试创建一个 3 位数的唯一代码(对应于消防、警察、卫生),该代码加起来为 12,并且中间的数字(警察)始终为偶数。

我知道有一种蛮力的方法可以做到这一点,但我不想采用这种方法。我想我会采取稍微困难但希望有效的方法,即堆叠 3 个 for 循环。但我陷入了非常早期的阶段,无法理解正在发生的事情的逻辑。这是我的代码:

highestdigit=7
department_number=[0,0,0]
department_numbers=[]

for number in range(1,highestdigit+1):
#Fire, Police, Sanitation
#Numbering the Police dept
if number %2 == 0:
department_number[1]=number
department_numbers.append(department_number)

else:
pass
print(department_numbers)

我对此的期望是:

[[0,2,0,],[0,4,0],[0,6,0]]

我得到的是:

[[0,6,0,],[0,6,0],[0,6,0]]

这是为什么呢?为什么我会得到范围内的最大值数字,为什么是 3 次?

此外,如果我尝试将打印命令放在循环中,它

highestdigit=7
department_number=[0,0,0]
department_numbers=[]

for number in range(1,highestdigit+1):
#Fire, Police, Sanitation
#Numbering the Police dept
if number %2 == 0:
department_number[1]=number
department_numbers.append(department_number)
print(department_numbers)
else:
pass

我对此的期望:

[[0,2,0]]
[[0,2,0],[0,4,0]]
[[0,2,0],[0,4,0],[0,6,0]]

即它会逐步构建我想要的列表列表,并打印每个步骤。

相反,我得到的是:

[[0, 2, 0]]
[[0, 4, 0], [0, 4, 0]]
[[0, 6, 0], [0, 6, 0], [0, 6, 0]]

我很困惑为什么会出现这两种结果。

最佳答案

您在每个循环中使用相同的子列表department_number。将子列表的创建移动到循环中,每次都会给你一个新的:

highestdigit = 7
department_numbers = []

for number in range(1, highestdigit + 1):
#Fire, Police, Sanitation
#Numbering the Police dept
if number %2 == 0:
department_number = [0, 0, 0]
department_number[1] = number
department_numbers.append(department_number)
print(department_numbers)

输出:

[[0, 2, 0], [0, 4, 0], [0, 6, 0]]

或简化:

for number in range(1, highestdigit + 1):
#Fire, Police, Sanitation
#Numbering the Police dept
if number %2 == 0:
department_numbers.append([0, number, 0])

您还可以将其转换为列表理解:

department_numbers = [[0, number, 0] for number in range(1, highestdigit + 1) 
if number % 2 == 0 ]

关于python - 了解这些 Python for 循环创建列表列表的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48475638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com