新手求问 python 双重循环简化

大笑江湖 发布于 2016/10/27 22:23
阅读 764
收藏 0

a = [111,222,333,444]
b = [222,444,666,777]
c = []
for i in a:
   for o in b:
      if i == o:
c.append(i)

新手,想问又什么方法可以简化上边的代码

加载中
0
寂寞的原子
寂寞的原子
c = [i for i in a if i in b]

如果对顺序没有要求的话,可以:

c = list(set(a).intersection(set(b)))



0
DarkAngel
DarkAngel

看到上面的代码缩进整个人都不好了。。。。。。

我假设你想要让c等于a和b中都有的元素。

偷懒,并且不在意顺序的方法(直接利用set计算交集):list(set(a) & set(b))

用列表生成表达式:[i for i in a if i in b]

只简化逻辑(一个循环就够了):

for i in a:
    if i in b:
        c.append(i)

一般这种情况用列表生成表达式来写即简单,又容易理解。

大笑江湖
回复 @大笑江湖 : 。。 thank you
大笑江湖
think you
返回顶部
顶部