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



我想询问是否有可能仅在一行中处理多个列表以上的列表理解?我正在使用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行)变成一行?

我将感谢您的建议。让我知道我的问题是否有重复。非常感谢。

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

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
n=[1,2,3,4,5,6,7]
m=[1,7]
print set(n)-set(m)
> [2,3,4,5,6]

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

最新更新