删除有序数组中的重复项:
Nums:[2,3,3,4]
删除重复的数字3,应该怎么实现呢?
下面是大致的思路:
这个还不全面啊?
因为这个newlist的是一个空的列表对不对?你实际上应该返回的是什么, 从old list里面拿出来的不重复的元素呀.
怎么表示
从旧的LIST里面拿出不重复的元素?
你自己先说说,如果是你自己手动来操作这个你会怎么操作?
的任务就是已经有一个已经排序好的旧的列表,你要往一个新的列表里面不断的填充元素,元素内容不能重复
你不知道旧列表有多长,也不知道它里面有多少元素
可以假设旧的列表有大概10万个元素,那么你怎么知道你从旧列表中拿出来的元素是不是重复的呢?
那么就这样,你就先写一个函数
这个函数是这样的判断某一个原判断一个元素是不是在这个列表里面有重复的?
怎么判断一个元素在列表里有没有重复呀?
只要列表中出现了这个元素,并且最少出现两次,那就说明有重复的对不对?
那么你试试先写这么一个函数出来
一个函数需要考虑哪些部分呀?函数名称形式参数和返回值类型对不对?
先检查函数值,函数名称形式参数和返回值类型
bool没有被识别,去掉-> bool
在下面一行写 return False,bool类型,意思是真,假
它只有2个值:True和False
这里的函数是判断是否
那么自然也就有2个返回值,是(True)否(False)
58 59号先删除,然后重写,放在55和56行中间
56行,你自己检查一下错在哪里
56行是不是应该是for循环呀?For循环你用if关键字if是什么意思啊?如果对不对它不是循环呀,if是选择关键字
好的,现在给我解释一下,你这个函数里面的这个for循环的代码究竟是什么意思呢?
这个肯定是错误的,但是你要自己能够看懂它是什么意思,来给我说一下吧
这个写出了。i是否在这个数据里,不能表达出那个重复
重复要求a至少在列表里面出现两次,可以这么写,在for循环的前边一行添加一个额外的变量acc = 0,每一次a==b[i]
就让acc += 1
然后呢,如果acc>=2就return True
否则就return False
第60行判断ac>=2的
应该在什么时候判断呀?
先不要考虑代码,先自己想一想什么时候acc是用来干什么的,它应该在什么时候来判断它大于等于2呢?
一个循环执行好。
对了,他应该在循环执行完之后再执行
那么他是不是应该在for的语句块的外面呀?
你现在他不仅在for循环的语句块里面,他还在for循环里面的if的里面看看彩虹色的这个缩进
他是不是在for循环里边的里边呀
acc += 1
这一行是为了什么呀?
在循环里面对不对
那么它现在在循环里面的语句块吗?
为什么acc += 1下面的几行也缩进到for循环里面了?
想问 acc += 1是什么意思吗?
意思是acc的值加1
也就是说acc的值改变了,比如本来acc = 10那么
acc += 1之后acc == 11
之前教你的写法是acc = acc + 1
这2种写法都可以,个人爱好
一个函数:首先函数名,形式参数,返回值
def 函数名(形式参数,逗号分隔的第二个形式参数,逗号分隔的第3个..):
return 返回值
总结:DEF定义一个旧的列表,然后寻找重复的元素在旧列表里面,如果不是重复的就把它放在新的列表里面,结果新显示重复元素没有出现在新的列表里面,这个结果不是我么想要的。 然后寻找系的方法。 在新列表中寻找是否有存在的,没有重复的就放进新的列表,有重复的就不放。 这个方法的展示如下:
列表中去除重复的