我基本上想做一个元素明智的加法,但只使用循环,所以没有 numpy 或 map

I basically want to do an element-wise addition but using only for loops, so no numpy or map

这是我想要的布局外观。我希望它成为一个函数,以便我可以在 cmd 提示符下使用它。每个列表的长度必须相同,否则应该 return none

def add_elements(list1, list2):
     if len(list1)==len(list2):
          for i in list1:
     else:
          None

我不知道“for i in list1:”是否是我应该使用的,如果是的话后面是什么?

for 循环中使用列表索引

list1 = [1,2,3,4,5]
list2 = [5,4,3,2,1]

def add_elements(list1, list2):
     if len(list1) != len(list2): return None
     lst = []
     if len(list1)==len(list2):
          for i in range(len(list1)):
             lst.append(list1[i] + list2[i])
     return lst
          
print(add_elements(list1, list2))

输出

[6, 6, 6, 6, 6]

如果允许zip函数,这样会更快:

list1 = [1,2,3,4,5]
list2 = [5,4,3,2,1]

lst = [a+b for a,b in zip(list1, list2)]
print(lst)

输出

[6, 6, 6, 6, 6]

如果我理解正确的话,我想这就是你要找的:

def add_elements(list1, list2):
    if len(list1) == len(list2):

        results = []
        for i in range (len(list1)):
            results.append(list1[i] + list2[i])

        return results

    else:
        return None


l1 = [1,2,3,4]
l2 = [5,6,7,8]
l3 = [1,2,3,4,5,6]

print(add_elements(l1, l2))
print(add_elements(l1, l3)

如果列表的长度相同,for 循环将迭代添加元素的列表的长度。最后几行(在函数定义之外)将证明该函数有效。第一个打印语句将为您提供结果列表。第二个打印语句将显示 'None' 因为 l1 和 l3 的长度不同。

希望对您有所帮助。