迭代多个数组

Bog*_*ski 0 python list

我有一个函数,用于将一些数字转换为需要迭代几个数组的不同形式。我使用了两个嵌套的 for 循环,但结果不是我所期望的。我希望该函数总共返回 5 个变量,但它返回每个数组中变量的数量彼此相乘。因此,在以下情况下,它返回一个包含 25 个变量的数组。

co_60_activities = [2 , 2 , 3 , 3 , 3]
co_60_masses     = [2 , 2 , 3 , 3 , 3] 
def activity(activities, masses, array):
    for x in range(len(activities)):
        for y in range(len(masses)):
            array.append(activities[x] * masses[y] * 37000.0)
a_counts = []
activity(co_60_activities, co_60_masses, a_counts)
Run Code Online (Sandbox Code Playgroud)

我在类似的帖子中发现迭代多个列表的传统方法是使用 zip 函数。所以我将我的功能更改为以下内容:

def activity(activities, masses, array):
    for x , y in zip(activities , masses):
        array.append(activities[x] * masses[y] * 37000.0)
Run Code Online (Sandbox Code Playgroud)

这会产生“类型错误:列表索引必须是整数,而不是浮点数”我认为我需要以某种方式转换数据类型,但我不确定如何转换。

the*_*eye 5

zip将给出实际的项目本身,而不是它们的索引。所以,你可以直接做

array.append(x * y * 37000.0)
Run Code Online (Sandbox Code Playgroud)

实际上,这里不需要函数,而是可以使用列表理解创建一个新列表,如下所示

a_counts = [x * y * 37000.0 for x, y in zip(co_60_activities, co_60_masses)]
Run Code Online (Sandbox Code Playgroud)