我的任务是为一个项目编写一个算法。基本上,我扫描数据以获得唯一的项并将它们的位置存储在一个数组中。所以我得到了可变长度的多个数组。现在我必须对所有这些数组和它们的元素进行元素操作。请注意,这些总是被排序的(如果这很重要的话)
a = [0, 7, 13, 18]
b = [1, 2, 8, 10]
c = [0, 3, 5, 6, 7]
当前的解决方案是一个非常基本的循环解决方案,我循环遍历每个数组,并将其元素与每个其他数组及其元素进行比较。它只适用于少量的数组,并且,正如您可以想象的那样,当我有许多具有自己的数组/列表的唯一项时,它就不能很好地工作。
def add(a, b):
result = []
for i in range(len(a)):
for j in range(len(b)):
result.append(a[i] + b[j])
return result
a = [0, 7, 13, 18]
b = [1, 2, 8, 10]
c = [0, 3, 5, 6, 7]
total_unique_items = [a, b, c]
calc = []
for i in range(len(total_unique_items)):
for j in range(i+1, len(total_unique_items)):
calc.append(add(total_unique_items[i], total_unique_items[j]))
print(calc)
我知道有像zip这样的python解决方案,但是我的老师要求这里有一个通用的独立于语言的解决方案。 我不太确定如何处理这个问题。一种方法是使用树或图这样的数据结构并遍历它?另一种方法是在循环的第i次迭代中对数组的所有第i个元素执行操作。这样,主循环将运行最长数组的长度。我只是真的很困惑,我很想知道我应该走的方向。 问题来源StackOverflow 地址:/questions/59382875/generic-algorithm-for-element-wise-operation-between-hundreds-of-lists
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。