gpt4 book ai didi

python - 在 python 中使用嵌套 for 循环创建列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:21 24 4
gpt4 key购买 nike

我正在尝试使用 python 中的嵌套 for 循环创建一个列表。该列表需要由多个列表组成,每个列表对应于某个参数的值并包含该参数的方程结果。运行我的代码会产生 IndexError 。这是我的代码中导致问题的部分:

T_1 = [[]]

for j in range(len(A_1)):
for i in range(len(y_1)):
T_1[j][i] = T0_1 + ((q0_1 / k_1) * y_1[i]) - ((A_1[j] / (2 * k_1)) * y_1[i]**2)

序列A_1y_1具有不同的大小( y_1 是一个 150 长的深度点列表, A_1 是一个 4 个字符长的参数不同值列表 A )。

最佳答案

Python 列表不会自动增长;寻址不存在的索引不起作用。您通常会使用 .append()为此:

T_1 = []

for a in A_1:
nested = []
T_1.append(nested)
for y in y_1:
nested.append(T0_1 + ((q0_1 / k_1) * y) - (a / (2 * k_1)) * y**2))

请注意,您不再需要创建索引;您可以直接循环 A_1y_1并使用公式中的值。

另一种方法是创建一个带有占位符值的空结构;喜欢 None :

T_1 = [[None] * len(y_1) for _ in range(len(A_1))]

for i, a in enumerate(A_1):
for j, y in enumerate(y_1):
T_1[i][j] = T0_1 + ((q0_1 / k_1) * y) - (a / (2 * k_1)) * y**2))

这里我用了 enumerate() 为每个循环添加索引;这可以让你鱼与熊掌兼得;访问输入序列中的值及其在序列中的位置。

但是,您的嵌套列表可以最简单地使用一组 list comprehensions 的嵌套集来生成。 :

T_1 = [[T0_1 + ((q0_1 / k_1) * y) - ((a / (2 * k_1)) * y**2) for i in y_1] for a in A_1]

这里[expression for variable in iterable]为循环的每次迭代执行左侧的表达式。外循环A_1为每个 a 生成一个新列表在循环。这个新列表本身就是一个列表理解,循环 y_1并为每个元素生成新值(您的公式)。

请注意,现在我们不再需要生成索引使用 list.append()每次循环迭代。这些列表是就地构建的。

关于python - 在 python 中使用嵌套 for 循环创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271769/

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