gpt4 book ai didi

python - 如何循环遍历 python 中具有指定范围的列表中的参数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:35 25 4
gpt4 key购买 nike

假设我们已经给出了这个小程序:

a = [[70, 19, 54,  7, 63],
[78, 72, 93, 78, 33],
[83, 55, 57, 9, 22],
[95, 64, 90, 91, 54]]

for x, y, *z in a:
print("x = {}, y = {}, z = {}".format(x, y, z))

这将给我列表中的第一个元素a:

x = 70, y = 19, z = [54, 7, 63]

但我想要的是定义,定义的变量应该有多少个元素,例如像这样:

for x, y[:2], z[:2] in a:
print("x = {}, y = {}, z = {}".format(x, y, z))

确实这在 python 中不起作用。 (我试过了)

如果有一种方法可以在 python 中执行类似的操作,那就太好了。

我知道我可以做这样的事情:

b = list(zip(*a))

c1 = b[0]
c2 = list(zip(*b[1:3]))
c3 = list(zip(*b[3:5]))

for x, y, z in zip(c1, c2, c3):
print("x = {}, y = {}, z = {}".format(x, y, z))

a 中的第一个参数:

x = 70, y = (19, 54), z = (7, 63)

但是对于一个巨大的列表a,这现在非常有效。

最佳答案

赋值中的 * 运算符旨在用于捕获列表的“外部”元素。它不是一种模式匹配语言。

您的选择是:

  • 生成更多结构化数据。如果您的输入已经分组到元组或其他对象中,您将更容易在循环中处理它。

  • 提取循环中的子列表,然后赋值:

    for values in a:
    x, y, z = values[0], values[1:3], values[3:5]
  • 使用生成器表达式重新打包结构;生成器表达式的循环与生成器的迭代并行进行:

    a_repacked = ((v[0], v[1:3], v[3:5]) for v in a)
    for x, y, z in a_repacked:
    # ...

    您可以将生成器表达式内联到 for 循环语句中,但为了便于阅读,我建议您坚持使用一个单独的变量。

关于python - 如何循环遍历 python 中具有指定范围的列表中的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43394493/

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