如何根据其他列表的值减少列表的内容?

时间:2016-04-22 14:29:24

标签: python python-3.x

标题有点模糊,这是我的问题。

我试图根据另一个列表中项目左右的值来减少一个列表的内容。

一个例子:

如果我有以下2个列表。

a = [1,2,3,5,7,8]
b = [1,2,3,4,7]

我的约束是a = b + 1

我想返回

a = [2,3,5,8]
b = [1,2,4,7]

1和7不能在a中,因为b中没有0或6。

3不能在b中,因为a中没有4。

我在概念化如何处理这个问题时遇到了问题。

我目前的尝试是:

c = []
d = []
for i in a:
   for j in b:
       if (i+1) == j or (i-1) ==j:
           c.append(i)
           d.append(j)

我的想法是然后我会得到一个= c和b = d,但我得到的结果是

c= [1,2,2,3,3,5,8]
d= [2,1,3,2,4,4,7]

我完全理解为什么我会在c和d中得到这些数字,但我担心如何获得正确数字的逻辑完全逃脱了我。这是我必须做的更大项目的一小部分,但我特别关注这一部分。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

一个简单而且效率低下的答案(用列表理解编辑):

c = [el for el in a if (el-1) in b]
d = [el for el in b if (el+1) in a]