使用倒序循环删除list中重复的相同元素 、 string的split使用、返回list(string)中出现多次的某元素的indexs...

本文介绍Python中处理列表的实用技巧,包括如何通过倒序遍历删除指定元素、使用split方法解析字符串以及查找列表中最大值的所有索引位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考链接: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]




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值