代码应该做的是将两个整数列表(列表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]): 有没有办法检查索引,因为这个功能继续?谢谢!
答案 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)