Crossin的编程教室

标题: 每日一坑 2 [打印本页]

作者: cccc3126    时间: 2018-1-25 18:16
标题: 每日一坑 2
#从一组数据中去除掉重复的元素,并将其排序输出。
#我的想法是先随机提取一些整数比如在1-50中随机取20个数(当然要可以重复)
#然后再对这些数进行操作

import random  #要用到随机操作先调用random函数
n = 1
rlist = []                            #建立1个空列表
while n <= 20:
    num = random.randint(1,50)        #生成一个1-50之间的随机整数
    rlist = rlist + [num]             #把生成的随机整数添加到rlist列表中
    n += 1                            #迭代
print(rlist)                          #打印测试
rlist.sort()                          #对列表进行顺序排序
print(rlist)
##for i in rlist:                       #对列表中的每一个值进行提取
##    m = rlist.count(i)                #计算值在列表中出现的次数
##    if m > 1:                         #如果多于1次
##        rlist.remove(i)               #移除掉该值在列表中的第一个匹配项
##print(rlist)                          #打印列表
##当有4个或以上重复数字的时候就出错了,会打印出重复数字的。。(待解决)


作者: a974988176    时间: 2018-4-2 10:53
for i in rlist是用迭代器实现,内部隐藏了记录当前迭代器的状态,而remove方法删除了当前元素后,迭代器自动指到下一个元素,原先的rlist在内存中的位置并未改变
可以把
for i in rlist:
改成
for i in rlist[:]:
即可解决
作者: 小小艳紫    时间: 2018-4-24 09:57
#keng2
def del_repeat(list):
    result = []
    lenc = len(list)-1
    n = 0
    for i in range(n,lenc):
        i = n
        if list in list[i+1:]:
           # print list
            list.pop(i)
            lenc-=1
            if i >0:
                n =i
            if i ==0:
                n =0
        else:
           # print "result:%d" % list
            result.append(list)
            print result
            n = i+1
    result.append(list[-1])
    return result

a = [1,2,3,4,3,5,6,4,1,2,7,7,7,4]
b = [1,2,3,4]
x = del_repeat(a)
print x
y = del_repeat(b)
print y



作者: 小小艳紫    时间: 2018-4-24 09:58
小小艳紫 发表于 2018-4-24 09:57
#keng2
def del_repeat(list):
    result = []

自测了一下没有问题,不知道有没有测试全




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5