在一个列表中,找出重复数组的位置。
比如在列表name = [1, 5, 8, 22, 56, 2, 8, 45, 7, 2, 35, 2, 486, 2, 152, 111, 265, 2, 2]中,找出2的位置。
方法1:
流程为:
找到第一个2的位置,然后在2之后的一个数后面切片,再找2,再再后一个数切片,循环下去。
第一个2的位置就是name中第一个2的位置。
第二个2的位置为第一个2的位置加上第二个切片中2的位置加1(位置从0开始)
第三个以此类推。
代码:
#_*_coding:utf-8_*_ name = [1, 5, 8, 22, 56, 2, 8, 45, 7, 2, 35, 2, 486, 2, 152, 111, 265, 2, 2]new_pos = 0 #初始位置定位0 for i in range(name.count(2)): # for循环次数为2出现的次数new_list = name[new_pos:] #切片,从刚开始的0处切片,实现new_list = namenext_pos = new_list.index(2) #第一个2的位置找出print next_pos + new_pos #输出2的位置,由新位置加上下一个位置new_pos += next_pos + 1 #新的位置为自身加上下一个位置再加一,因为切片要从2之后的一个数开始,否则下一个2位置永久为0
输出结果:
方法2(超暴力):
流程为:
从第一个2开始,每次都把这个位置的2删掉,以后2的位置加上删掉2的次数即可。
代码如下:
#_*_coding:utf-8_*_ name = [1, 5, 8, 22, 56, 2, 8, 45, 7, 2, 35, 2, 486, 2, 152, 111, 265, 2, 2]for i in range(name.count(2)): # 循环次数为列表中2出现的次数print name.index(2) + i # 输出2的位置加上i的数,i为0、1、2、3……恰好前面删掉2的次数del name[name.index(2)] # 删掉当前输出的2,形成新的列表进入下次循环
输出结果: