Python 学习随笔1

在一个列表中,找出重复数组的位置。

比如在列表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 = name
    next_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,形成新的列表进入下次循环

 输出结果:

 

posted @ 2016-10-17 23:17  wuqiangroy  阅读(113)  评论(0)    收藏  举报