繁体   English   中英

如何同时遍历列表?

[英]How do I iterate through a list simultaneously?

我有一个样本,它以 [p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p12 p13 p14 p15 p16] 形式给出值

print(sample)

    [[ 1.43945312  4.29003906  9.55566406 ... 61.11035156 66.15917969
      69.03417969]
     [ 2.98242188  4.29003906  9.55566406 ... 61.11035156 66.15917969
      69.03417969]
     [ 1.43945312  6.17675781  9.55566406 ... 61.11035156 66.15917969
      69.03417969]
     ...
     [ 1.92480469  5.76220703  9.69482422 ... 61.23486328 66.62939453
      69.31982422]
     [ 1.92480469  5.76220703  9.69482422 ... 61.23486328 65.97900391
      68.15966797]
     [ 1.78027344  4.68701172 10.25439453 ... 62.68505859 66.62939453
      68.15966797]]

我想使用 function 遍历这个示例,它接受 16 个输入并给出一个值作为 output。

我怎样才能做到这一点? 例如,采用 function 模型(p1, p2, p3, p4, p5, p6, .... p16),它需要 16 个输入

model(1.43945312, 4.29003906, 9.55566406, ... 61.11035156, 66.15917969, 69.03417969)

(这是第一个样品)然后保存output

然后它将移动到第二个样本并执行

model(2.98242188, 4.29003906, 9.55566406, ... 61.11035156, 66.15917969, 69.03417969)

并保存 output.. 依此类推。

这有意义吗? 道歉,因为我是 Python 的新手,还不知道确切的术语我该怎么做

使用 for 循环和可迭代解包:

def model(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16):
    pass # do something

output = []
for sample in data: # iterate over samples
    print(len(sample))
    result = model(*sample)
    output.append(result)

@Programmer 的答案很好 有人认为您可能想要使用 *args 在 function 声明中。 这使您可以拥有可变数量的 arguments 并将它们作为列表引用,因此您无需指定所有 16 个 arguments。

def method(*args):
    p1 = args[0]
    ...
    p16 = args[15]
   # Or whatever you want to do with them. 

但是,如果您没有为该方法提供足够的 arguments,这可能会导致IndexError 这取决于您想用 function 做什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM