MIQIWEI 发表于 2020-5-19 22:27:48

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

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

Test 1:a_list =
remove_triplets(a_list)
print(a_list)

result 1:

Test 2:a_list =
remove_triplets(a_list)
print(a_list)

result2:

Test 3:a_list =
remove_triplets(a_list)
print(a_list)

result 3:


Twilight6 发表于 2020-5-19 22:35:06

骚等~~

老八秘制 发表于 2020-5-19 22:38:58

变成集合不就行了?

MIQIWEI 发表于 2020-5-19 22:46:45

老八秘制 发表于 2020-5-19 22:38
变成集合不就行了?

那怎么写呢

MIQIWEI 发表于 2020-5-19 22:47:29

Twilight6 发表于 2020-5-19 22:35
骚等~~

好滴!先谢谢大佬!

老八秘制 发表于 2020-5-19 22:47:49

MIQIWEI 发表于 2020-5-19 22:46
那怎么写呢

set()一下,甲鱼视频应该讲了

Twilight6 发表于 2020-5-19 22:53:29

MIQIWEI 发表于 2020-5-19 22:47
好滴!先谢谢大佬!

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

帮你写下骚等哈~

MIQIWEI 发表于 2020-5-19 23:03:27

Twilight6 发表于 2020-5-19 22:53
刚刚去解决tkinter的问题了 我回来啦哈哈

帮你写下骚等哈~

好滴!每次都能看到你!真的是大佬!

Twilight6 发表于 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))==1 :
            ls.remove(ls)
            ls.remove(ls)
            ls.remove(ls)
      else:
            count += 1

    return ls

a_list =
print(remove_triplets(a_list))
a_list =
print(remove_triplets(a_list))
a_list =
print(remove_triplets(a_list))
a_list =
remove_triplets(a_list)
print(a_list)

sunrise085 发表于 2020-5-19 23:32:46

题目要求是在原列表的基础上进行删除元素,而非创建新列表
defremove_triplets(a_list):
    i=len(a_list)-1
    while i>=2:
      if a_list==a_list==a_list:
            a_list.pop(i-2)#连续删除三个相同的元素
            a_list.pop(i-2)
            a_list.pop(i-2)
            i-=3
            continue
      i-=1


a_list =
remove_triplets(a_list)
print(a_list)

a_list1 =
remove_triplets(a_list1)
print(a_list1)

a_list2 =
remove_triplets(a_list2)
print(a_list2)

sunrise085 发表于 2020-5-19 23:34:39

Twilight6 发表于 2020-5-19 23:16
不,我不是大佬,我做这题都做了十几分钟....大佬几分钟就搞定了

题目要求是在原列表上修改,不是创建新列表哎~~
你的程序原列表没变,把新列表最为返回值返回了

sunrise085 发表于 2020-5-19 23:37:08

老八秘制 发表于 2020-5-19 22:47
set()一下,甲鱼视频应该讲了

set是不行滴~~~
题目要求是删除连续三个相同的元素。相同但不连续的不删除,连续相同两个也不删除
请看给出的示例2

MIQIWEI 发表于 2020-5-19 23:38:42

Twilight6 发表于 2020-5-19 23:16
不,我不是大佬,我做这题都做了十几分钟....大佬几分钟就搞定了

还有一个问题 就是它题目要求是这个样子测试
a_list =
remove_triplets(a_list)
print(a_list)

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

Twilight6 发表于 2020-5-19 23:38:51

sunrise085 发表于 2020-5-19 23:32
题目要求是在原列表的基础上进行删除元素,而非创建新列表

好吧 那我在改改

Twilight6 发表于 2020-5-19 23:40:23

MIQIWEI 发表于 2020-5-19 23:38
还有一个问题 就是它题目要求是这个样子测试
a_list =
re ...

{:10_266:}我感觉我不配答题了题目都没读好

MIQIWEI 发表于 2020-5-19 23:41:27

Twilight6 发表于 2020-5-19 23:40
我感觉我不配答题了题目都没读好

哈哈哈哈哈不不不 你还是很厉害的!!!

Twilight6 发表于 2020-5-19 23:42:54

MIQIWEI 发表于 2020-5-19 23:41
哈哈哈哈哈不不不 你还是很厉害的!!!

能给我点时间在挽回一下下嘛{:10_266:}

sunrise085 发表于 2020-5-19 23:44:11

MIQIWEI 发表于 2020-5-19 23:38
还有一个问题 就是它题目要求是这个样子测试
a_list =
re ...

看10楼~~
对的话,给评个最佳~~

MIQIWEI 发表于 2020-5-19 23:49:42

sunrise085 发表于 2020-5-19 23:44
看10楼~~
对的话,给评个最佳~~

哇!感谢!!!

Twilight6 发表于 2020-5-19 23:50:37

我回来了QAQ
def remove_triplets(ls):

    count = 0

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


    return ls

a_list =
print(remove_triplets(a_list))
a_list =
print(remove_triplets(a_list))
a_list =
print(remove_triplets(a_list))
a_list =
remove_triplets(a_list)
print(a_list)
页: [1] 2
查看完整版本: 求助!如何删除list中重复的连续三次的元素!感谢