python查重算法hash,Python在不用算法只用内置模块完成数组查重

突发奇想然后把自己难为了很长时间,主要还是自己菜,设想是这样的,当给出一个数组不知道任意数组下标也不知道下标对应的值是多少,只能确定数组中存在重复数据,如何剔除这些重复数据不用set()函数转成集合再转列表。

自己在给自己找个蹩脚的麻烦:然后得出的结论也非常的蹩脚,希望感兴趣的大佬能指正下

n = [1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 14, 14, 15, 17] # 随便设定的数组,如题假装默认不知道值和下标

n.sort()

b = []

c = []

def f1(s, i=0, o=1): #我的想法是先把数组中重复数据的下标找出,然后通过下标改变重复数据的值为统一值后,一同剔除

for t in s:

c.append(n.index(t))

while i < len(c):

k = o

j = o

while k < len(c):

if c[i] == c[j]:

b.append(c[i])

k += 1

j += 1

i += 1

o += 1

return b

q = f1(n)

k2 = len(q)

k1 = 0

#想了半天的结果,感觉自己太菜了,以至于如果是多个重复数据想要直接剔除在我写的程序下无法完成,只能先完成两个重复数据的剔除

然后得到新的数组再次剔除.....估计也能想到了,只不过写这个就头大了,只有真的上手才明白自己的弱小.

while k2 > 0:

k3 = q[k1]

n[k3] = 's'

k1 += 1

k2 -= 1

for k4 in q:

n.remove('s')

print(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值