吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 782|回复: 10
收起左侧

[求助] python中列表去重的一个特殊情况求助

[复制链接]
cenoser795 发表于 2022-4-8 10:39
#初始列表
org_list=['a','a','a','a','b','b','c','c','d','d','1','1','1','1']

#想要达到的去重效果
res_list=['a','a','b','c','d','1','1']

即不是对org_list完全去重,而且去重一半的重复数据,这个怎么写呀?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pzx521521 发表于 2022-4-8 10:56
3个数据怎么办?
wslans 发表于 2022-4-8 10:58
从头开始判断元素呗,取每一个跟前一个判断是否重复,重复则舍弃,同时指针加一,取下一个作为比对元素,下下一个开始比对
bubblej 发表于 2022-4-8 11:16
org_list=['a','a','a','a','b','b','c','c','d','d','1','1','1','1']
res_list = list()
tmp_set = set()

for i in org_list:
  if i in tmp_set:
    tmp_set.remove(i)
  else:
    tmp_set.add(i)
    res_list.append(i)

print(res_list)

这样?改吧改吧?

pzx521521 发表于 2022-4-8 11:31
[Python] 纯文本查看 复制代码
def DeleteHalf(org):
    ileft = 0
    iright = 1
    temp_len = 1
    org_len = len(org)
    #注意处理最后一个
    while iright <= org_len:
        if iright < org_len and org[iright] == org[iright - 1]:
            temp_len+=1
        else:
            for i in range(int(temp_len / 2)):
                org[ileft] = org[iright-1]
                ileft+=1
                temp_len = 1
        iright+=1
    return ileft

if __name__ == '__main__':
    org_list = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd', '1', '1', '1', '1']
    # 排序
    length = DeleteHalf(org_list)
    org_list = org_list[:length]
    print(org_list)
无闻无问 发表于 2022-4-8 12:15
可以这样
遍历,用list.count(2)统计个数,大于2就del list[index]…
无闻无问 发表于 2022-4-8 12:19
org_list=['a','a','a','a','b','b','c','c','d','d','1','1','1','1']
for i in org_list:
    if org_list.count(i)>2:
        org_list.remove(i)
print(org_list)
 楼主| cenoser795 发表于 2022-4-8 12:22
pzx521521 发表于 2022-4-8 11:31
[mw_shl_code=python,true]def DeleteHalf(org):
    ileft = 0
    iright = 1

完美实现!
lvcaolhx 发表于 2022-4-8 12:26
pzx521521 发表于 2022-4-8 11:31
[mw_shl_code=python,true]def DeleteHalf(org):
    ileft = 0
    iright = 1

for i in range(int(temp_len / 2)):
                org[ileft] = org[iright-1]
                ileft+=1
                temp_len = 1

temp_len = 1这句代码起什么作用?
无闻无问 发表于 2022-4-8 12:35
org_list=['a','a','a','a','b','b','c','c','d','d','1','1','1','1']
for i in range(len(org_list)-1,-1,-1):
    if org_list.count(org_list[i])>2:
        del org_list[i]      
print(org_list)
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表