Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数百个列表间元素操作的通用算法_Python_Arrays_Algorithm - Fatal编程技术网

Python 数百个列表间元素操作的通用算法

Python 数百个列表间元素操作的通用算法,python,arrays,algorithm,Python,Arrays,Algorithm,我的任务是为一个项目写一个算法。基本上,我扫描数据以获得唯一的项,并将它们的位置存储在一个数组中。所以我最终得到了多个长度可变的数组。现在我必须对所有这些数组及其元素执行元素操作。请注意,这些将始终被排序(如果这很重要的话) 我目前的解决方案是一个非常基本的循环解决方案,我循环遍历每个数组,并将其元素与其他数组及其元素进行比较。它适用于少量的数组,并且,正如您所想象的,在我有很多独特的项,每个项都有自己的数组/列表的情况下,它不起作用 def add(a, b): result = []

我的任务是为一个项目写一个算法。基本上,我扫描数据以获得唯一的项,并将它们的位置存储在一个数组中。所以我最终得到了多个长度可变的数组。现在我必须对所有这些数组及其元素执行元素操作。请注意,这些将始终被排序(如果这很重要的话)

我目前的解决方案是一个非常基本的循环解决方案,我循环遍历每个数组,并将其元素与其他数组及其元素进行比较。它适用于少量的数组,并且,正如您所想象的,在我有很多独特的项,每个项都有自己的数组/列表的情况下,它不起作用

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个元素执行操作。这样,我的主循环将运行最长数组的长度。我真的很困惑,很想知道我应该从这里走的方向。

total_unique_items是一个列表。我制作这些a、b、c列表只是为了演示。或者你的意思是什么?你能使用为python编写的库吗?看起来itertools是你需要的here@emilaz是的,我也可以用拉链做。但是我的老师要求一个不使用任何库的通用解决方案。我不确定我是否理解你必须解决的问题。。。您的代码是否按预期工作?如果是,您是否要求更整洁的解决方案?否则,预期的输出是什么?您的程序速度很慢,因为输出很大。任何产生如此多数字输出的东西都会如此缓慢。如果您有两个长度分别为100000的数组,并且希望所有对的列表相乘,那么您的输出将有100000*100000=1000000000个元素。想象一下,如果你有1000个这样长的列表。。。我想你可能误解了别人要求你做的事。
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)