对于学校作业,我们必须创建一个函数,该函数确定列表是否为单射的,并返回True或False。推荐两种完成工作的方法:使用“ for”循环和“ while”循环。我设法使用“ for”循环进行编程,但是由于“ while”循环存在问题,因为我无法弄清楚为什么我的无限。
我将我的代码放在下面。我已经尝试摆脱一些不必要的变量,并且在循环中修改“ a”的值时,在我看来,这在纸上没什么问题。
def injective(x):
i=0
k=i+1
a=True
while i<len(L)-1 : #L is the name of the list
while k<len(L) :
if L[i]==L[k] :
a=False
else :
a=True
i+=1
return a
我希望列表为内射时为True,否则为
答案 0 :(得分:1)
这是因为内部循环中k的值没有变化,我认为您在某处缺少k+=1
。
代码
def injective(x):
i=0
k=i+1
while i<len(L)-1 : #L is the name of the list
while k<len(L) :
if L[i]==L[k] :
return False
k+=1
i+=1
return True
我已经自由地对代码进行了一些优化(对于非内射函数,它将大大减少迭代)。您可以通过for循环在其他程序中使用相同的代码。