我想问一下是否有可能在列表理解的一行中处理多个列表?我使用的是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行)转换成一行?
我很感激你的建议。如果我的问题有重复,请告诉我。非常感谢你。
答案 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]
如果需要执行其他操作,请将集合分配给自己的变量。转换为集合将需要一些时间在一个大的列表,但然后成员资格,减法,联合或交叉操作应该非常快。