计算列表中数组的元素

时间:2015-06-08 03:09:36

标签: python arrays

我在列表中有数组,我想从两个不同的列表中计算数组中的元素数,而不是计算列表项。

import numpy as np
def count_total(a,b):
#count the total number of element for two arrays in different list
x,y=len(a),len(b)
result=[]
for a1 in a:
    for b2 in b:
        result.append(x+y)
return result

a=[np.array([2,2,1,2]),np.array([1,3])]
b=[np.array([4,2,1])]
c=[np.array([1,2]),np.array([4,3])]

print(count_total(a,b))
print(count_total(a,c))
print(count_total(b,c))

实际输出

[3, 3]
[4, 4, 4, 4]
[3, 3]

所需的输出

[7,5]
[6,6,4,4]
[5,5]

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

从您看来,您希望所有可能的方法来总结数组的长度。这可以通过itertools.product来实现。这是我的代码:

from itertools import product

def count_total(a,b):
    return [sum(map(len, i)) for i in product(a, b)]

产品返回a和b各一个元素的所有可能安排。然后,对于每个排列,我们从每个列表中取出排列中的部分len,然后将它们与sum一起添加。

答案 1 :(得分:0)

Bug在第4行,x和y被分配列表长度而不是数组长度。

替换第4-8行

x,y=len(a),len(b)
result=[]
for a1 in a:
    for b2 in b:
        result.append(x+y)

y= lambda x:len(x)
result=[]
for a1 in a:
    for b1 in b:
        result.append(y(a1) + y(b1))