我受命为项目编写算法。基本上,我扫描数据以获取唯一项并将其位置存储在数组中。所以我最终得到了多个长度可变的数组。现在,我必须对所有这些数组及其元素进行明智的操作。请注意,这些将始终进行排序(如果需要的话)
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之类的pythonic解决方案,但是我的老师要求在这里提供一种与语言无关的通用解决方案。
我不确定如何解决这个问题。一种方法是使用数据结构,例如树或图形并遍历它?另一种方法是找到一种在循环的第i次迭代中对所有数组的第i个元素执行操作的方法。这样,我的主循环将运行最长数组的长度。我对此真的很困惑,很想知道我应该从这里走的方向。