是他们在python上用另一个列表的每个元素划分列表中的每个元素的任何方法


list_1 = [10,12,16,20]
list_2 = [2,9,5,3,6]
division  = []
for x in list_1 :
division.append (list_2/x)
print (division)

我试过了,但它给了我错误我想要的是我不想导入任何外部模块numpy或其他

使用zip()内置方法:

list_1 = [10,12,16,20]
list_2 = [2,9,5,3,6]
division  = []
for e1, e2 in zip(list_1, list_2):
division.append(e2 / e1)
print(division)

打印:

[0.2, 0.75, 0.3125, 0.15]

您可以通过以下方式使用map

list_1 = [10,12,16,20]
list_2 = [2,9,5,3,6]
division  = list(map(lambda x,y:x/y,list_2,list_1))
print(division)

输出:

[0.2, 0.75, 0.3125, 0.15]

map接受函数和可迭代项,我确实使用了匿名函数(lambda(接受两个参数,这两个参数返回其除法的效果和list_2list_1map确实将该函数应用于彼此对应的元素,并给出迭代器,我将其转换为list

这样尝试:

list_1 = [10,12,16,20]
list_2 = [2,9,5,3,6]
division  = []
for x in list_1:
for y in list_2:
division.append(y/x)
print(division)

如果你想用另一个列表中相同位置的元素来划分第一个列表的元素,你可以在列表理解中使用zip:

listA = [10,12,16,20]
listB = [2,9,5,3,6]
divisions = [ a/b for a,b in zip(listA,listB) ]
print(divisions)
# [5.0, 1.3333333333333333, 3.2, 6.666666666666667]

如果你真的想把第一个列表的每个元素除以另一个列表的每一个元素,那么使用两级列表理解:

divisions = [ a/b for a in listA for b in listB ]
print(divisions)
# [5.0, 1.1111111111111112, 2.0, 3.3333333333333335, 1.6666666666666667, 6.0, 1.3333333333333333, 2.4, 4.0, 2.0, 8.0, 1.7777777777777777, 3.2, 5.333333333333333, 2.6666666666666665, 10.0, 2.2222222222222223, 4.0, 6.666666666666667, 3.3333333333333335]

最新更新