鱼C论坛

 找回密码
 立即注册
查看: 1358|回复: 22

[已解决]求助!如何删除list中重复的连续三次的元素!感谢

[复制链接]
发表于 2020-5-19 22:27:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
定义remove_triplets()函数,该函数传递一个整数列表作为参数。该函数从列表中删除所有三元组(即,删除列表中完全相同的三个连续元素)。

Test 1:a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
remove_triplets(a_list)
print(a_list)

result 1:[7, 3]

Test 2:a_list = [6, 6, 6, 7, 6, 6, 6, 6, 6]
remove_triplets(a_list)
print(a_list)

result2:[7, 6, 6]

Test 3:a_list = [1, 1, 1, 1]
remove_triplets(a_list)
print(a_list)

result 3:[1]


最佳答案
2020-5-19 23:32:46
题目要求是在原列表的基础上进行删除元素,而非创建新列表
def  remove_triplets(a_list):
    i=len(a_list)-1
    while i>=2:
        if a_list[i]==a_list[i-1]==a_list[i-2]:
            a_list.pop(i-2)#连续删除三个相同的元素
            a_list.pop(i-2)
            a_list.pop(i-2)
            i-=3
            continue
        i-=1


a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
remove_triplets(a_list)
print(a_list)

a_list1 = [6, 6, 6, 7, 6, 6, 6, 6, 6]
remove_triplets(a_list1)
print(a_list1)

a_list2 = [1, 1, 1, 1]
remove_triplets(a_list2)
print(a_list2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 22:35:06 | 显示全部楼层
骚等~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 22:38:58 | 显示全部楼层
变成集合不就行了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 22:46:45 | 显示全部楼层
老八秘制 发表于 2020-5-19 22:38
变成集合不就行了?

那怎么写呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 22:47:29 | 显示全部楼层

好滴!先谢谢大佬!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 22:47:49 | 显示全部楼层

set()一下,甲鱼视频应该讲了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 22:53:29 | 显示全部楼层
MIQIWEI 发表于 2020-5-19 22:47
好滴!先谢谢大佬!

刚刚去解决tkinter的问题了 我回来啦哈哈

帮你写下骚等哈~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 23:03:27 | 显示全部楼层
Twilight6 发表于 2020-5-19 22:53
刚刚去解决tkinter的问题了 我回来啦哈哈

帮你写下骚等哈~

好滴!每次都能看到你!真的是大佬!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:16:28 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-19 23:57 编辑
MIQIWEI 发表于 2020-5-19 23:03
好滴!每次都能看到你!真的是大佬!


不,我不是大佬,我做这题都做了十几分钟....大佬几分钟就搞定了

之前代码错了,订正:
def remove_triplets(ls):

    count = 0

    while count < len(ls)-2:
        if len(set(ls[count:count+3]))==1 :
            ls.remove(ls[count])
            ls.remove(ls[count])
            ls.remove(ls[count])
        else:
            count += 1

    return ls

a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
print(remove_triplets(a_list))
a_list = [6, 6, 6, 7, 6, 6, 6, 6, 6]
print(remove_triplets(a_list))
a_list = [1, 1, 1, 1]
print(remove_triplets(a_list))
a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
remove_triplets(a_list)
print(a_list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:32:46 | 显示全部楼层    本楼为最佳答案   
题目要求是在原列表的基础上进行删除元素,而非创建新列表
def  remove_triplets(a_list):
    i=len(a_list)-1
    while i>=2:
        if a_list[i]==a_list[i-1]==a_list[i-2]:
            a_list.pop(i-2)#连续删除三个相同的元素
            a_list.pop(i-2)
            a_list.pop(i-2)
            i-=3
            continue
        i-=1


a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
remove_triplets(a_list)
print(a_list)

a_list1 = [6, 6, 6, 7, 6, 6, 6, 6, 6]
remove_triplets(a_list1)
print(a_list1)

a_list2 = [1, 1, 1, 1]
remove_triplets(a_list2)
print(a_list2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:34:39 | 显示全部楼层
Twilight6 发表于 2020-5-19 23:16
不,我不是大佬,我做这题都做了十几分钟....大佬几分钟就搞定了

题目要求是在原列表上修改,不是创建新列表哎~~
你的程序原列表没变,把新列表最为返回值返回了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:37:08 | 显示全部楼层
老八秘制 发表于 2020-5-19 22:47
set()一下,甲鱼视频应该讲了

set是不行滴~~~
题目要求是删除连续三个相同的元素。相同但不连续的不删除,连续相同两个也不删除
请看给出的示例2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 23:38:42 | 显示全部楼层
Twilight6 发表于 2020-5-19 23:16
不,我不是大佬,我做这题都做了十几分钟....大佬几分钟就搞定了

还有一个问题 就是它题目要求是这个样子测试
a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
remove_triplets(a_list)
print(a_list)

我在后面加了几行 但是好像不太对 我是用的索引 把这个原始列表更新成了新列表 可以再告诉我一下该怎么改吗?谢谢!
    for index in range(len(new_ls)):
        ls[index]=new_ls[index]
        return ls

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:38:51 | 显示全部楼层
sunrise085 发表于 2020-5-19 23:32
题目要求是在原列表的基础上进行删除元素,而非创建新列表

好吧 那我在改改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:40:23 | 显示全部楼层
MIQIWEI 发表于 2020-5-19 23:38
还有一个问题 就是它题目要求是这个样子测试
a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
re ...

我感觉我不配答题了  题目都没读好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 23:41:27 | 显示全部楼层
Twilight6 发表于 2020-5-19 23:40
我感觉我不配答题了  题目都没读好

哈哈哈哈哈不不不 你还是很厉害的!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:42:54 | 显示全部楼层
MIQIWEI 发表于 2020-5-19 23:41
哈哈哈哈哈不不不 你还是很厉害的!!!

能给我点时间在挽回一下下嘛  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:44:11 | 显示全部楼层
MIQIWEI 发表于 2020-5-19 23:38
还有一个问题 就是它题目要求是这个样子测试
a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
re ...

看10楼~~
对的话,给评个最佳~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 23:49:42 | 显示全部楼层
sunrise085 发表于 2020-5-19 23:44
看10楼~~
对的话,给评个最佳~~

哇!感谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:50:37 | 显示全部楼层
我回来了QAQ
def remove_triplets(ls):

    count = 0

    while count < len(ls)-2:
        if len(set(ls[count:count+3]))==1 :
            ls.remove(ls[count])
            ls.remove(ls[count])
            ls.remove(ls[count])
        else:
            count += 1


    return ls

a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
print(remove_triplets(a_list))
a_list = [6, 6, 6, 7, 6, 6, 6, 6, 6]
print(remove_triplets(a_list))
a_list = [1, 1, 1, 1]
print(remove_triplets(a_list))
a_list = [6, 6, 6, 7, 6, 6, 6, 3, 3, 3, 8, 8, 8, 3]
remove_triplets(a_list)
print(a_list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 06:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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