gpt4 book ai didi

python - 如何使用 zip 迭代 x 个列表

转载 作者:行者123 更新时间:2023-12-03 09:21:07 25 4
gpt4 key购买 nike

我有几个需要迭代的列表。我的 zip 函数工作得很好,但为了使我的代码更加灵活,我想知道如何使用 zip,但从变量中获取列表的数量?

例如,而不是:

for 1,2,3 in zip(list_1,list_2,list3):
do something

我们可以做更多类似的事情:

i = 1   
var = number of lists
zipall = zip(all_my_lists)


for i in range(1,var) in zip(zipall):
do something

这段代码还没有接近工作,我只是想给出我想要做的事情的想法。任何提示将非常感激。提前致谢。

更新

感谢到目前为止的提示。看起来使用 * 函数可能适合我。到目前为止,我正在尝试使 zip 语句的前半部分正常工作:

args = [0,1]
for i in range(*args) in zip(outputlist[0],outputlist[1]):
print range(*args)

但是以“for”开头的行给出了以下错误:

TypeError: 'bool' object is not iterable

知道我哪里出错了吗?非常感谢迄今为止的帮助。

最佳答案

您可能对 * 和 ** 感兴趣: What does ** (double star) and * (star) do for parameters?

  • 基本上转换列表并将所有内容转换为函数调用中的参数。

所以:

myfunc(1,2,3)

与相同

myfunc(*[1,2,3])

如果您有定义数量的变量和定义的范围,那么这是毫无意义的,但如果您有可变数量的参数,请使用 * arg 来压缩列表并迭代所有它们。

编辑:你现在做错了一些事情。

就目前情况而言,这会修复您的代码,但我怀疑这是您的意图。

def myfunc(*args):    # this passes an arbitrary number of values
length = len(args)
# you cannot add a second "in:, this makes a comparison
# like 5 > 4, or something, which returns a boolean value
for i in range(0, length):
do_something(i) # this does something to the index

我相信这是您的目标:对所有列表执行某些操作:

def myfunc(*args):
for arg in args: # grabs each list sequentially
do_something(arg)

关于python - 如何使用 zip 迭代 x 个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30750243/

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