当前位置:  开发笔记 > 编程语言 > 正文

在Python中减去2个列表

如何解决《在Python中减去2个列表》经验,为你挑选了5个好方法。

现在我将vector3值表示为列表.有没有办法减去其中2个像vector3值,比如

[2,2,2] - [1,1,1] = [1,1,1]

我应该使用元组吗?

如果它们都没有在这些类型上定义这些操作数,我可以改为定义它吗?

如果没有,我应该创建一个新的vector3类吗?



1> UncleZeiv..:

如果这是你最终经常做的事情,并且使用不同的操作,你应该创建一个类来处理这样的情况,或者更好地使用像Numpy这样的库.

否则,查找与zip内置函数一起使用的列表推导:

[a_i - b_i for a_i, b_i in zip(a, b)]


`[i - j for i,j in zip(a,b)]`更具可读性,并且不会用a和b中的项替换a和b.

2> Nikhil Chell..:

这是列表推导的替代方案.Map迭代遍历列表(后面的参数),同时这样做,并将它们的元素作为参数传递给函数(第一个arg).它返回结果列表.

map(operator.sub, a, b)

这段代码因为语法较少(对我来说更美观),而且对于长度为5的列表显然要快40%(参见bobince的评论).不过,任何一种解决方案都可行


需要'import operator'条款; int .__ sub__做得更好))
对于我来说,对于我来说,对于五元素的减法,map()的速度快了近40%.理解是更新更清洁,他们避免使用lambda,但是为了映射现有的功能,地图仍然可以很漂亮...特别是在这里您可以利用内置的zip.

3> recursive..:

如果您的列表是a和b,则可以执行以下操作:

map(int.__sub__, a, b)

但你可能不应该这样做.没有人会知道这意味着什么.



4> mikelikespie..:

我不得不建议与NumPy以及

它不仅可以更快地进行矢量数学运算,而且还具有大量的便利功能.

如果你想要1d矢量更快的东西,试试vop

它类似于MatLab,但是免费和东西.这是你要做的一个例子

from numpy import matrix
a = matrix((2,2,2))
b = matrix((1,1,1))
ret = a - b
print ret
>> [[1 1 1]]

繁荣.



5> Andy Mikula..:

如果您有两个名为"a"和"b"的列表,则可以执行以下操作: [m - n for m,n in zip(a,b)]

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有