我有一个函数,用于将一些数字转换为需要迭代几个数组的不同形式。我使用了两个嵌套的 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)
这会产生“类型错误:列表索引必须是整数,而不是浮点数”我认为我需要以某种方式转换数据类型,但我不确定如何转换。
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)
| 归档时间: |
|
| 查看次数: |
4416 次 |
| 最近记录: |