我有一个像这样的2D数组:
[[aaa-1-2,
aaa-3-4,
bbb-y-t,
aaa-5-t],
[bbb-1-2,
dfs-3-4,
bbb-a-9,
yui-5-t]]
我想编写一个函数或某种东西来获取包含'aaa'的元素的总和(在[aaa-1-2, aaa-3-4, bbb-y-t, aaa-5-t]
中,以及在[bbb-1-2, dfs-3-4, bbb-a-9, yui-5-t]
中的'bbb'的总和。
在此示例中,总和应为3+2=5
,我只知道如何计算两个数组之间完全相同的元素之和,但不确定如何解决这个问题,有人可以帮我吗?谢谢。
答案 0 :(得分:1)
对于具有与n个子列表相对应的n个前缀的一般解决方案,可以使用enumerate
找出您所在的子列表并查找要使用的适当前缀,然后对测试进行求和:
l = [["aaa-1-2", "aaa-3-4","bbb-y-t","aaa-5-t"],
["bbb-1-2", "dfs-3-4", "bbb-a-9","yui-5-t"]]
prefix = ['aaa', 'bbb']
sum(prefix[i] in s for i, sub in enumerate(l) for s in sub)
# 5
如果您有更多的子列表和更多的字符串,则可以添加到前缀列表中。