是否有可能在一个列表理解行中处理两个列表?

时间:2017-02-28 05:36:52

标签: python-2.7 list-comprehension

我想问一下是否有可能在列表理解的一行中处理多个列表?我使用的是Python 2.7。

代码如下所示:

n=[1,2,3,4,5,6,7]
m=[1,7]
c=[]

for x in m:
    if x in n:
        c.append(x)
        n.pop(n.index(x))

print n
print c

输出结果为:

[2,3,4,5,6]
[1,7]

现在我想知道我是否可以使用列表理解将代码(第5行到第8行)转换成一行?

我很感激你的建议。如果我的问题有重复,请告诉我。非常感谢你。

2 个答案:

答案 0 :(得分:1)

您可以这样做,因为从列表中弹出一个值会返回值

n=[1,2,3,4,5,6,7]
m=[1,7]
c=[n.pop(n.index(x)) for x in m if x in n]
print n
print c

答案 1 :(得分:1)

n=[1,2,3,4,5,6,7]
m=[1,7]
print set(n)-set(m)
> [2,3,4,5,6]

如果需要执行其他操作,请将集合分配给自己的变量。转换为集合将需要一些时间在一个大的列表,但然后成员资格,减法,联合或交叉操作应该非常快。