我在列表中有数组,我想从两个不同的列表中计算数组中的元素数,而不是计算列表项。
码
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]
有人可以帮忙吗?
答案 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))