首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在嵌套列表中找到不同的值,并找到Python 3中的不同之处?

如何在嵌套列表中找到不同的值,并找到Python 3中的不同之处?
EN

Stack Overflow用户
提问于 2018-05-02 12:00:29
回答 4查看 80关注 0票数 1

我有两个嵌套列表,如下所示:

代码语言:javascript
复制
list_1 = [[4,9,2],[3,5,7],[8,1,5]]
list_2 = [[4,9,2],[3,5,7],[8,1,6]]

我希望在这两个嵌套列表之间找到不同的值,以及它的不同之处。在上面的列表中,不同的值是5和6,所以区别是:-1(5-6)。注意,不会列出任何公共值。

我想把它存储在一个列表中,然后打印它的输出:

代码语言:javascript
复制
[-1]

另一个例子是:

代码语言:javascript
复制
list_1 = [[3, 6, 7], [4, 9, 9], [7, 6, 9]]
list_2 = [[6, 7, 2], [1, 5, 9], [8, 3, 4]]

输出应该如下:

代码语言:javascript
复制
[-3,-1,5,3,4,-1,3,5]

如果它们都是常见的,则应该返回一个空列表:[]

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-05-02 12:07:07

使用一个简单的列表-理解:

代码语言:javascript
复制
list_1 = [[3, 6, 7], [4, 9, 9], [7, 6, 9]]
list_2 = [[6, 7, 2], [1, 5, 9], [8, 3, 4]]

print([x-y for i in range(len(list_1)) for x, y in zip(list_1[i], list_2[i]) if x-y])
# [-3, -1, 5, 3, 4, -1, 3, 5]

或者使用itertools.chain

代码语言:javascript
复制
from itertools import chain

list_1 = [[3, 6, 7], [4, 9, 9], [7, 6, 9]]
list_2 = [[6, 7, 2], [1, 5, 9], [8, 3, 4]]

print([x-y for x, y in zip(chain(*list_1), chain(*list_2)) if x-y])
# [-3, -1, 5, 3, 4, -1, 3, 5]
票数 0
EN

Stack Overflow用户

发布于 2018-05-02 12:04:57

代码语言:javascript
复制
from itertools import chain 

[l1-l2 for l1, l2 in zip(chain(*list_1),chain(*list_2)) if l1-l2]
票数 1
EN

Stack Overflow用户

发布于 2018-05-02 12:06:19

作为一个纯函数式,但有点模糊,您可以使用itertools.starmap()itertools.chain()加上zipoperator.sub

代码语言:javascript
复制
In [165]: list(starmap(sub, chain.from_iterable(starmap(zip, zip(list_1, list_2)))))
Out[165]: [-3, -1, 5, 3, 4, 0, -1, 3, 5]

另一种更容易理解的方法是使用flatten函数来平平嵌套列表,然后使用简单的列表理解和zip

代码语言:javascript
复制
In [168]: def flatten(lst):
     ...:     return [i for sub in lst for i in sub]
     ...: 

In [169]: [i-j for i, j in zip(flatten(list_1), flatten(list_2))]
Out[169]: [-3, -1, 5, 3, 4, 0, -1, 3, 5]
# or starmap(sub, zip(flatten(list_1), flatten(list_2)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50134183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档