如何同时迭代一个列表?

时间:2021-04-22 11:28:21

标签: python

我有一个示例,它给出了表单中的值 [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]]

我想使用一个函数来遍历这个示例,该函数接受 16 个输入并给出一个值作为输出。

我该怎么做? 例如,采用需要 16 个输入的函数模型 (p1, p2, p3, p4, p5, p6, .... p16) 我想遍历示例以使其执行

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

(哪个是第一个样本)然后保存输出

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

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

并保存输出..依此类推。

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

2 个答案:

答案 0 :(得分:2)

使用 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)

答案 1 :(得分:0)

@Programmer 的回答工作正常 一种认为您可能想要使用的是函数声明中的 *args。 这使您可以拥有可变数量的参数并将它们作为列表引用,因此您无需指定所有 16 个参数。

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

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