函数main()接收若干列表,
使用 参数data 接收第一个列表,使用 参数iterables 接收剩余的所有列表,
要求从data中删除其它列表中的元素(如果其它列表中某个元素不在data中就直接忽略,类似于集合的差集运算),且剩余元素保持原来的相对顺序。
例如,main(list(map(str,range(10))),[3,5,7,9,1],[6,3,3])返回[0,2,4,8]。
返回不能有多余的东西。
(列表元素原本有单引号)
题目应该是说如果这个元素存在其它列表里,那就删除这个元素。但示例好像不是这意思……
def main(data, *iterables): #为啥加个星标嘞?
data=[]
*iterablies=[]
for i in range(len(data)):
for i in range(len(*itreables)):
if data[i] == (*iterables)[i]:
data.pop[i]
return data
答题错误!您的代码执行结果为:
File xxx.py, line 3
*iterablies=[]
^
SyntaxError: starred assignment target must be in a list or tuple
语法错误:带星标的分配目标必须位于列表或元组中
1.加个星标表示这是一个不定数量的参数,也就是可以传入多个参数,iterables则是一个元组
2.这是形参,你不要在后面修改形参,iterablies=[]这是不对的,你把形参弄没了
3.后面所有*iterablies要改为iterablies,把星去掉
4.内外循环变量不能都用i,那就乱套了
5.元组里每个元素都是个list,所以不能==,改为if data[i] in iterablies[j]
6.你在for循环的过程里删除元素,会导致索引越界,应该从后往前遍历
def main(data, *iterables):
for i in range(len(data)-1,-1,-1):
for s in iterables:
if data[i] in s :
del data[i]
break
return data
a=main(list(range(10)),[3,5,7,9,1],[6,3,3])
print(a)
题目的意思是main有两个参数,第一个参数是一个列表,第二个参数是多个列表,然后,只要第二个参数里面的所有列表中的元素在第一个参数的列表里面出现过,那就需要从第一个列表中删除。
比如第一个参数为[1,2,3] 第二个参数为[2, 4] [3,5]那么第一个参数中的2和3就需要删除,因为在后面的列表中出现过
*表示可变参数,你可以看下
https://blog.csdn.net/qq_41035283/article/details/124058567
望采纳哦!!
这题好像是考选择结构与循环结构。