参考链接:https://www.cnblogs.com/huahuayu/p/8179775.html
比如[1,2,4, 5, 4, 4] 要变成[1,2,3,5]
alist = ['d', 'd', 7, 4, 'd', 'd', 2, 1]
for i in range(len(alist)-1,-1,-1): #倒序循环,从最后一个元素循环到第一个元素.不能用正序循环.因为正序循环删除元素后后续的列表的长度和元素下标同时也跟着变了.len(alist)是动态的.
if alist[i] == 'd':
alist.pop(i) #将index=i处的元素删除并return该元素。
print(alist) #[7, 4, 2, 1]
很精髓,,,寻找list中相同的元素总是比较麻烦,,,
因为list自带的一些方法只默认返回该元素第一次出现的位置...(比较鸡肋...)
倒序操作之前没尝试过,很好用啊....记下了!......
但是为什么倒序循环, 删除元素不影响list长度而报错我还没搞明白,,,等知道了再来补充......
python里string的split也非常好用,感觉自己之前走了好多弯路[擦汗...],比如:
line = '713251263 16 32 64 128 99'
a = int(line.split(" ")[2])-int(line.split(" ")[1]) #使用split分别定位到第二和第一个“ ”前的那个元素,然后相减.非常好用,比我之前去找多个空格出现的索引位置方便多了...
b = int(line.split(" ")[4])-int(line.split(" ")[2]) #对第四第二个空格前的元素定位并相减
print a,b #16,96
然后是返回某一出现多次的元素的索引(们)...以最大值为栗(即list中的最大值不止一个...)
#返回list中多个最大值(某一特定元素)的index
def getmaxind(a, count): #a是list, count是最大值的个数
inds = []
def getm(a, count):
ind1 = a.index(max(a))
inds.append(ind1)
a.pop(ind1) # 把第一个最大值删掉
count -= 1
if count > 0:
return getm(a, count)
else:
return inds
inds = getm(a, count)
for i in range(len(inds)):
inds[i] += i
return inds #返回得到的inds list就是最大值对应的索引们...a = [1,2,3,4,3,2,0,4,3,4,4,0,4]
inds = getmaxind(a, 5)
print inds #[3,7,9,10,12]