如何同时迭代多个列表

2024-04-24 12:01:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表列表(每次代码作为参数传入时创建的列表数量),在每个列表中,我需要在x个列表数量中迭代第二个列表中的每个项目。你知道吗

简化格式为:

list = [[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [7, 8, 9]], [[1, 2, 3], [10, 11, 12]]]

我需要遍历列表,做(4+7+10),(5+8+11)和(6+9+12)。你知道吗

我在编写代码方面没有太大进展,目前我只是将第二个列表中的每一项加在一起:

mean_list = []
for i in list1:
    each_item = 0
    for ca in i[1]:
        each_item += ca
    mean_list.append(each_item)
print(mean_list)

使用上面的例子,最终结果应该是mean_list = [21, 24, 27]。你知道吗


Tags: 项目代码in列表for参数数量格式
3条回答

我不知道确切的目的是什么,但我们可以做到这一点。。。。你知道吗

l = [[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [7, 8, 9]], [[1, 2, 3], [10, 11, 12]]]
mean_list = []
for i in range(len(l[0][0])):
    mysum = 0
    for j in l:
        mysum+=j[1][i]
    mean_list.append(mysum)
print(mean_list)

输出 [21, 24, 27]

一些理解,总结和拉链魔术:

>>> i = [[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [7, 8, 9]], [[1, 2, 3], [10, 11, 12]]]
>>> q = [x[1] for x in i]
>>> [sum(i) for i in zip(*q)]
[21, 24, 27]

要得到平均值,除以长度:

>>> [sum(i)/len(i) for i in zip(*q)]
[7.0, 8.0, 9.0] 

您可以使用以下list comprehension。第一个zip是选择每个子列表中的第二个列表,第二个是交错这些列表中的元素,以便简单地获取summean

from statistics import mean
sums, means = zip(*[(sum(i), mean(i)) for i in zip(*list(zip(*l))[1])])

print(sums)
# (21, 24, 27)
print(means)
# (7, 8, 9)

相关问题 更多 >