python中两个列表相减的方法
我不知道如何在 python 中创建一个可以计算这个的函数:
List1=[3,5,6]
List2=[3,7,2]
结果应该是一个从 List1 中减去 List2 的新列表,List3=[0,-2,4]
! 我知道,我必须以某种方式使用 zip 功能。通过这样做我得到: ([(3,3), (5,7), (6,2)])
,但我不知道现在该怎么办?
I can't figure out how to make a function in python that can calculate this:
List1=[3,5,6]
List2=[3,7,2]
and the result should be a new list that substracts List2 from List1, List3=[0,-2,4]
!
I know, that I somehow have to use the zip-function. By doing that I get:([(3,3), (5,7), (6,2)])
, but I don't know what to do now?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
试试这个:
它使用
zip
、列表推导式和解构。Try this:
This uses
zip
, list comprehensions, and destructuring.此解决方案使用 numpy。它仅对于较大的列表才有意义,因为实例化 numpy 数组会产生一些开销。 OTOH,对于除了简短列表之外的任何内容,这都将非常快。
This solution uses numpy. It makes sense only for largish lists as there is some overhead in instantiate the numpy arrays. OTOH, for anything but short lists, this will be blazingly fast.
您可以按照@Matt的建议使用列表理解。您还可以使用 itertools - 更具体地说,是
imap()
函数:与所有 itertools 函数一样,
imap()
返回一个迭代器。您可以生成一个列表,将其作为list()
构造函数的参数传递:编辑:正如下面 @Cat 所建议的,最好使用
带有
函数:imap()
的operator.sub()You can use list comprehension, as @Matt suggested. you can also use itertools - more specifically, the
imap()
function:Like all itertools funcitons,
imap()
returns an iterator. You can generate a list passing it as a parameter for thelist()
constructor:EDIT: As suggested by @Cat below, it would be better to use the
operator.sub()
function withimap()
:下面还有另一个解决方案:
添加: 只需检查 python 参考
map
你会发现你可以将多个迭代传递给map
Yet another solution below:
ADDITION: Just check for the python reference of
map
and you'll see you could pass more than one iterable tomap
您可以按照以下方式
输出
[0, -2, 4]
You can do it in the following way
that outputs
[0, -2, 4]