将一个列表与另一个列表进行比较并创建子集列表

时间:2016-03-15 16:35:41

标签: python list

代码应该做的是将两个整数列表(列表a和列表b)作为输入,并返回第一个列表中整数单元内的第二个列表(列表b)的子集(列表a)。到目前为止,我有这个:

def omssa(a,b):
new=[]
for x in b:
    boolean=True
    while(boolean==True):
        for char1 in a:
            if(b[x]== a[char1]):
                new.append(b[x])
                boolean=False
            elif(b[x]==(a[char1]+1)):
                new.append(b[x])
                boolean=False
            elif(b[x]==(a[char1]-1)):
                new.append(b[x])
                boolean=False
        boolean=False
return new

但是我在第7行得到了一个超出范围错误的列表索引:if(b [x] == a [char1]): 有没有办法检查索引,因为这个功能继续?谢谢!

2 个答案:

答案 0 :(得分:0)

当您编写for char1 in a时,char1是列表中的实际值,而不是索引。所以你不能使用a[char1]。请参阅enumerate(),或者使用range()进行迭代。

答案 1 :(得分:0)

如果您的列表多次不包含相同的int,则应使用set个对象而不是list。喜欢:

def omssa(a,b):
    b2 = set(b)
    return b2.intersect(a)