Crossin的编程教室

标题: 【每日一坑 2】 去除重复 [打印本页]

作者: crossin先生    时间: 2013-12-16 21:22
标题: 【每日一坑 2】 去除重复
上周挖了每日一坑的第一坑:随机取数。大家很给力,论坛上已经有了十多份解答。(包括一份c语言版本)

有人说,这是算法题啊。对于普通程序员来说,是的。但对于python程序员来说,有非常简单的做法:

random.sample(range(1, n), m)

range之前介绍过,可以产生一个序列。random.sample是从一个序列中随机取出一些元素。这正好满足了我们的要求。

@nodejx,@TongShan,@h01m3s 用了这种方法。当然,其他方法也是可行的。

不过有些解答没有考虑重复,帖子里已经有人指出了。


今天的坑:从一组数据中去除掉重复的元素,并将其排序输出。比如:
4, 7, 3, 4, 1, 9, 8, 3, 7

输出结果:
1, 3, 4, 7, 8, 9





作者: fl0w    时间: 2013-12-16 21:37
filter.py
  1. #! /usr/bin/env python
  2. # coding:utf-8

  3. import sys

  4. if len(sys.argv) == 1:
  5.     print 'Please input like this:./filter.py 4 7 3 4 1 9 8 3 7'
  6. else:
  7.     originList = [int(i) for i in sys.argv[1:]]
  8.     print sorted(set(originList))
复制代码

作者: caven    时间: 2013-12-16 21:59
sorted(set((4, 7, 3, 4, 1, 9, 8, 3, 7)))
作者: byron    时间: 2013-12-16 22:02
  1. #!/usr/bin/python
  2. #coding:utf-8

  3. num = [4,7,3,4,1,9,8,3,7]
  4. result = set(num)
  5. print(result)
复制代码
扔到集合里就好了。

作者: byron    时间: 2013-12-16 22:11
哇,sample真好用。
不过,应该是n+1才对,哈哈
  1. random.sample(range(1, n+1), m)

  2. #python3
  3. import random
  4. random.sample(list(range(1,n+1),m))
复制代码

作者: aurora    时间: 2013-12-16 23:12
list(set((4, 7, 3, 4, 1, 9, 8, 3, 7))).sort()
作者: xuefu    时间: 2013-12-17 00:56
本帖最后由 xuefu 于 2013-12-17 00:59 编辑

第一次发现C标准库里还有排序的函数。。。
  1. #include <assert.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. int compare_ascending(const void* a, const void* b)
  5. {
  6.   return (*(int*)a - *(int*)b);
  7. }

  8. int main(int argc, const char *argv[])
  9. {
  10.   int a, n, m, i = 0, j = 0;
  11.   int* secret;

  12.   printf("Input n: ");
  13.   scanf("%d", &n);

  14.   assert(n > 1 || n == 1);

  15.   printf("Input m: ");
  16.   scanf("%d", &m);

  17.   if(m > 0 && !(m > n))
  18.     printf("Below is the number: \n");
  19.   else
  20.   {
  21.     printf("the number m should be greater than zero and not larger than n.\n");
  22.     exit(0);
  23.   }

  24.   secret = malloc(sizeof(int) * m);
  25.   srand(time(NULL));

  26.   while(m--)
  27.   {
  28.     /* generate the number you want */
  29.     while(1)
  30.     {
  31.       a = rand() % n + 1;
  32.       /* check a whether is repeated */
  33.       for(j = 0; j < i; j++)
  34.       {
  35.         if(a == secret[j])
  36.         {
  37.           a = 0;
  38.           break;
  39.         }
  40.       }
  41.       if(a != 0)
  42.         break;
  43.     }
  44.     secret[i++] = a;
  45.   }

  46.   qsort(secret, i, sizeof(int), compare_ascending);

  47.   for (j = 0; j < i; j++)
  48.     printf("%d ", secret[j]);

  49.   printf("\n");
  50.   free(secret);

  51.   return 0;
  52. }
复制代码

作者: h01m3s    时间: 2013-12-17 03:35
  1. # -*- coding: utf-8 -*-

  2. '''
  3. 今天的坑:从一组数据中去除掉重复的元素,并将其排序输出。比如:
  4. 4, 7, 3, 4, 1, 9, 8, 3, 7

  5. 输出结果:
  6. 1, 3, 4, 7, 8, 9
  7. '''

  8. def filter(list):
  9.         print sorted(set(list))

  10. list = [4,7, 3, 4, 1, 9, 8, 3, 7]

  11. filter(list)
复制代码

作者: jox    时间: 2013-12-17 10:46
好吧。可能我的方法比较笨了
  1. rawArr = [4, 7, 3, 4, 1, 9, 8, 3, 7]

  2. for obj in rawArr:
  3.   if rawArr.count(obj) > 1:
  4.     rawArr.remove(obj)

  5. rawArr.sort()
  6. print(rawArr)
复制代码

作者: crossin先生    时间: 2013-12-17 13:38
byron 发表于 2013-12-16 22:11
哇,sample真好用。
不过,应该是n+1才对,哈哈

对,失误了
作者: nodejx    时间: 2013-12-17 15:11
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Copyright 2013 nodejx

  4. class Rduplicate:
  5.         #def __init__(self):
  6.         #        self=[]
  7.         def M1(self,x):
  8.                 return sorted(list(set(x)))
  9.         def M2(self,x):
  10.                 return sorted({}.fromkeys(x).keys())
  11. rd=Rduplicate()               
  12. print rd.M1([5,0,5,3,3,1,-2])
  13. print rd.M2([5,0,5,3,3,1,-2])
复制代码

作者: 阿聪    时间: 2013-12-17 15:42
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main(void)
  5. {
  6.     int i,j,min,pos;
  7.     int num[10];
  8.    
  9.     // 随机数存入数组并逐个输出
  10.     srand((unsigned)time(NULL));
  11.     for(i=0; i<10; i++)
  12.     {
  13.         num[i] = rand() % 10;    // 0~9的随机数
  14.         printf("%d ",num[i]);
  15.     }
  16.     printf("\n");

  17.     // 用"选择排序法"排序
  18.     // 找出数组中最小的数,与数组第一个数交换。
  19.     // 再找出除第一个数外,余下最小的数,以此类推
  20.     for(i=0; i<9; i++)
  21.     {
  22.         min = num[i];
  23.         pos = i;
  24.         for(j=i+1; j<10; j++)   
  25.         {
  26.             if(num[j] < min)
  27.             {
  28.                 min = num[j];
  29.                 pos = j;        
  30.             }
  31.         }
  32.         num[pos] = num[i];
  33.         num[i] = min;
  34.     }
  35.     // 输出"未去重"的数组
  36.     for(i=0; i<10; i++)
  37.         printf("%d ",num[i]);
  38.     printf("\n");
  39.    
  40.     // 输出"排序后并去重"的数字
  41.     // 对比 的当前位置前面的所有数字,没重复则输出
  42.     printf("%d ",num[0]);   
  43.     for(i=1; i<10; i++)
  44.     {
  45.         for(j=i; j>0; j--)
  46.         {
  47.             if(num[i] == num[j-1]) break;
  48.             else
  49.                 if(j==1)
  50.                 {
  51.                     printf("%d ",num[i]);
  52.                 }
  53.         }
  54.     }

  55.     return 0;
  56. }
复制代码
xuefu帮忙看看呗,好像不是很高效 。。先排序后去重,m、n设为10,懒得接受输入。


作者: liucy    时间: 2013-12-18 00:05
  1. def setsort(listl):
  2.     list2 = set(listl)
  3.     return sorted(list2)

  4. if __name__ == "__main__":
  5.     listt = []
  6.     listt = list(input ("Please input a serial number: "))
  7.     print setsort(listt)
复制代码

作者: xuefu    时间: 2013-12-18 00:08
阿聪 发表于 2015-2-6 22:42
xuefu帮忙看看呗,好像不是很高效 。。先排序后去重,m、n设为10,懒得接受输入。

...

排序里加入去掉重复的。。。
作者: 苍翠的路    时间: 2014-3-5 10:37
本帖最后由 苍翠的路 于 2014-3-5 10:45 编辑

  1. #include<iostream>
  2. #include<vector>

  3. using namespace std;

  4. int main()
  5. {
  6.         vector<int> arr;
  7.         int cnt;
  8.         while(cin>>cnt)
  9.                 arr.push_back(cnt);
  10.         int temp;
  11.         for(vector<int>::iterator ite=arr.begin();ite!=arr.end();++ite)
  12.         {
  13.                 for(vector<int>::iterator iter=(arr.end()-1);iter!=ite;--iter)
  14.                 {
  15.                         if((*iter)<(*(iter-1)))
  16.                         {
  17.                                 temp       =   *(iter-1);
  18.                                 *(iter-1)  =   *iter;
  19.                                 *iter           =   temp;                                
  20.                         }
  21.                         else if((*iter)==(*(iter-1)))
  22.                         {
  23.                                 arr.erase(iter);
  24.                         }
  25.                 }
  26.                 cout<<*ite<<" ";
  27.         }
  28.         cout<<endl;
  29. }
复制代码

作者: creek    时间: 2014-6-25 23:57
本帖最后由 creek 于 2014-6-25 23:59 编辑
  1. #!/usr/bin/env python
  2. #coding:UTF-8

  3. numList=[4, 7, 3,10, 4, 1,5,5,2,9, 8,6, 3, 7,15,15,16]
  4. numList=sorted(numList)
  5. tempList=numList[:]
  6. for i in range(len(tempList)-1):
  7.     if tempList[i]==tempList[i+1]:
  8.         numList.pop(i-(len(tempList)-len(numList)))
  9. print numList
复制代码

作者: toddlerya    时间: 2014-7-21 13:12
string_1 = [4,7,3,4,1,9,8,3,7]
string_2 = list(set(string_1))
print string_2

作者: sheila1227    时间: 2014-11-7 11:03
  1. print "习题2:从一组数据中去除掉重复的元素,并将其排序输出."

  2. def sort():
  3.     try:        
  4.         nums=raw_input("输入一组数据,以逗号隔开:\n")
  5.         nums=nums.split(',')
  6.         for i in range(0,len(nums)):
  7.            nums[i]=int(nums[i])
  8.         nums=list(set(nums))
  9.         nums.sort()
  10.         print nums
  11.     except:
  12.         print "="*40
  13.         print "出现错误,重新输入."
  14.         print "="*40
  15.         sort()

  16. sort()
  17.    
  18.    
  19.    
复制代码

作者: yjp0714    时间: 2015-6-1 17:24
data=[4, 7, 3, 4, 1, 9, 8, 3, 7 ]
for i in range(len(data)):
    print i
    temp=data[i]
    if i>1:
        for j in range(i):
            if data[j]==temp:
               data[i]=0

data= sorted(data)            
count=0            
for i in range(len(data)):
    if data[i]==0:
        count+=1
        
print data[count:]

作者: Lisbeth.M    时间: 2015-8-3 07:53
我看见有人的答案是sorted(set((4, 7, 3, 4, 1, 9, 8, 3, 7)))
然后我单独地打看看有什么效果,其实set(*,*,*,*,*,*)就可以达到效果了,所以sorted有什么用啊
作者: crossin先生    时间: 2015-8-3 13:57
Lisbeth.M 发表于 2015-8-3 07:53
我看见有人的答案是sorted(set((4, 7, 3, 4, 1, 9, 8, 3, 7)))
然后我单独地打看看有什么效果,其实set(* ...

set确实也带排序功能
作者: 十二君    时间: 2015-9-1 03:36
  1. lst1 = [4, 7, 3, 4, 1, 9, 8, 3, 7 ]
  2. lst2 = list(set(lst1))
  3. print lst2
复制代码
后来测试貌似 lst2 = set(lst1) 也可以获得同样的结果。
作者: accat    时间: 2015-9-16 00:18
ip=raw_input("input:")
ip+=','
num=0
se=set()
LenSet=len(se)
l=[]
for s in ip:
    if s!=',':
        num=num*10+int(s)
    else:
        se.add(num)
        if LenSet!=len(se):
            l.append(num)
            LenSet=len(se)
        num=0

l.sort()
print l
作者: accat    时间: 2015-9-16 00:23
  1. ip=raw_input("input:")
  2. ip+=','
  3. num=0
  4. se=set()
  5. LenSet=len(se)
  6. l=[]
  7. for s in ip:
  8.     if s!=',':
  9.         num=num*10+int(s)
  10.     else:
  11.         se.add(num)
  12.         if LenSet!=len(se):
  13.             l.append(num)
  14.             LenSet=len(se)
  15.         num=0

  16. l.sort()
  17. print l
复制代码

作者: manhong2112    时间: 2016-1-16 11:42

  1. import random
  2. o = [1,1,2,2,3,4,5,5,6,7]
  3. o2 = []
  4. for i in o:
  5.   if i in o2: continue
  6.   o2.append(i)

  7. o2.sort()
  8. print(o2)
复制代码

作者: xqqxjnt1988    时间: 2016-2-3 09:08
交作业,初学者请大神多指点,谢谢先

#!\usr\bin\python
#coding=utf-8
#下面这个函数是把一大堆用户输入的数据进行筛选,筛查掉重复数字,保留不重复的数字

def num_remove(listB):
    if (listB != []):
        final_set = set(listB)
        print "final num selected is as following:\t" , final_set
    else:
        print "wrong!"
        
def main():
    listA = []
   
    while True:
        ele = raw_input("please input a number:\t")
        print "ele:\t", ele
        print "ele type is :\t", type(ele)
        
        if (ele !=""):              #非必须写到刮号里面去,否则报错
            listA.append(ele)
        else:
            break
         
    print "The original list is as following:\t" , listA
    num_remove(listA)
   
if __name__=='__main__':
    main()
   
   
#if __name__=='__main__'此处main需要加上单引号,不加单引号要报错
作者: fangweiren    时间: 2016-2-6 14:09
  1. #coding:utf-8
  2. li = [4, 7, 3, 4, 1, 9, 8, 3, 7]
  3. li2 = []
  4. for i in li:
  5.         if i not in li2:
  6.                 li2.append(i)

  7. print sorted(li2)
复制代码

作者: mike90326    时间: 2016-3-16 15:10
Crossin 老师可以帮忙看看嘛,要疯掉了。。。
  1. def find_max(list):
  2.     num = len(list)
  3.     max = list[0]
  4.     for i in range(num-1):
  5.         if max > list[i+1]:
  6.             pass
  7.         else:
  8.             max = list[i+1]
  9.     return max
  10. def Not_contain(list,element):
  11.     if not list:
  12.         return True
  13.     for i in list:
  14.         if i == element:
  15.             return False
  16.         else:
  17.             return True
  18. def delete(list):
  19.     number = []
  20.     for i in list:
  21.         if Not_contain(number,i):
  22.             number.append(i)
  23.     return number
  24. list = raw_input('Pls input an array of numbers and use blank to separate them\n')
  25. List = list.split(' ')
  26. length = len(List)
  27. numbers = []
  28. result = []
  29. for i in range(length):
  30.     numbers.append(int(List[i]))
  31. for i in range(length):
  32.     if numbers == None:
  33.         exit()
  34.     else:
  35.         result.append(find_max(numbers))
  36.         try:
  37.             numbers.remove(find_max(numbers))
  38.         except:
  39.             pass
  40. print result
  41. print delete(result)
复制代码
我觉得其他部分都没什么问题,只是在 Not_contain(list,element)这个函数

这个函数只能check element是不是list[0],十分奇怪。。。
  1. def Not_contain(list,element):
  2.     if not list:
  3.         return True
  4.     for i in list:
  5.         if i == element:
  6.             return False
  7.         else:
  8.             return True
复制代码

作者: crossin先生    时间: 2016-3-16 23:55
mike90326 发表于 2016-3-16 15:10
Crossin 老师可以帮忙看看嘛,要疯掉了。。。我觉得其他部分都没什么问题,只是在 Not_contain(list,elemen ...

因为如果第一个不相等,就已经return True返回了啊。你体会一下
可以把else去掉,把return True 写在函数最后面。

不过其实不用这么麻烦,python自带了in方法:
if element not in list:
作者: mike90326    时间: 2016-3-23 11:41
crossin先生 发表于 2016-3-16 23:55
因为如果第一个不相等,就已经return True返回了啊。你体会一下
可以把else去掉,把return True 写在函数 ...

真是脑袋短路了。。。。感谢crossin老师!
作者: pythonnm    时间: 2016-9-8 16:09
from random import randint
m=18
n=20
list1=[randint(1,n+1) for i in range(m)]
print list1
list2=[]
for l in range(18):
    list2.append(list1[0])
    list1=[i for i in list1 if i!=list1[0]]
    if bool(list1)==False:
        break
print sorted(list2)

老师,看到很多答案用到set(),这个函数从哪学到的呀?
感觉不用set的话还是if i not in list2这种最简单,我这个就是把if i not in list2复杂化了
作者: crossin先生    时间: 2016-9-8 19:08
pythonnm 发表于 2016-9-8 16:09
from random import randint
m=18
n=20

这个入门课程里没有专门说。
python里的set是集合,它的特点是元素不重复。
作者: morpheus2222    时间: 2017-1-20 10:12
a = [2,4,1,1,1,1,1,7,3,2,5,4,8,9,7]
a = set(a)
print(a)
作者: 月下    时间: 2017-1-25 12:18
  1. x = [4,7,3,4,1,9,8,3,7]
  2. for i in x:
  3.     c = x.count(i)
  4.     if c > 1:
  5.         x.remove(i)
  6. x.sort()
  7. print (x)
复制代码

作者: huiwenwu    时间: 2017-3-6 12:02
要是只想删掉重复的部分,不排序呢?

试了一下,只用set([4, 7, 3, 4, 1, 9, 8, 3, 7])的话,输出的结果会是set([1, 3, 4, 7, 8, 9]) ?!
虽然是删掉了重复部分,但前面还是set和在括号里面,是怎么回事呢?
作者: crossin先生    时间: 2017-3-6 14:44
huiwenwu 发表于 2017-3-6 12:02
要是只想删掉重复的部分,不排序呢?

试了一下,只用set([4, 7, 3, 4, 1, 9, 8, 3, 7])的话,输出的结果会 ...

因为这是个set对象。如果要转回list,就写成 list(set(a))
如果你想保留原顺序,那用set直接做不到,得再自己处理
作者: huiwenwu    时间: 2017-3-7 01:11
crossin先生 发表于 2017-3-6 14:44
因为这是个set对象。如果要转回list,就写成 list(set(a))
如果你想保留原顺序,那用set直接做不到,得再 ...

thanks!

作者: jssngz    时间: 2017-3-12 18:52
  1. a = [4,7,3,4,1,9,8,3,7]
  2. b = list(set(a)).sort()
复制代码

作者: qingri    时间: 2017-6-7 00:28
笨法子来一个,刚入门不知有set 刚学了一些,的确方便。就好像sort排序一样。
lst_1 = [4,7,3,4,1,9,8,3,7]
lst_1.sort()
lst_2 = []
lst_2.append(lst_1[0])
for i in range(1,len(lst_1)):
      if lst_1[i] == lst_1[i-1]:
           continue
      else:
          lst_2.append(lst_1[i])
print lst_2

作者: wolfog    时间: 2017-8-17 19:38
# -*-coding:utf-8-*-
# 去除重复元素并且排序
listNum = [-1,100, 6, 7, 7, 3, 5, 42, 3, 4, 5, 45, 45]
dictionary = {}
for i in listNum:
    dictionary[i] = 0
noRepeatList = [key for key in dictionary]
print sorted(noRepeatList)

作者: cheng_mingyi    时间: 2017-8-19 09:13
我的笨方法,看了大家的答案,真是受益匪浅!
  1. list_num = [4, 7, 3, 4, 1, 9, 8, 3, 7]
  2. for i in range(len(list_num)):
  3.     for j in range(i + 1,len(list_num)):
  4.         if list_num[i] == list_num[j]:
  5.             list_num.pop(j)
  6. list_num.sort()
  7. print list_num
复制代码

作者: wzqoo    时间: 2017-9-4 13:10

  1. list_num = [4, 7, 3, 4, 1, 9, 8, 3, 7]
  2. list_copy=list_num
  3. print list_num

  4. for x in list_copy:
  5.       num_count=list_copy.count(x)  
  6.       if num_count>1:
  7.          list_copy.remove(x)

  8. list_copy.sort()   
  9. print list_copy
复制代码

作者: yy58710623    时间: 2017-9-26 18:06
L=[4, 7, 3, 4, 1, 9, 8, 3, 7]
a=sorted(set(L))
print(list(a))
#用的Python3
作者: li_qiuming    时间: 2017-10-5 13:46
  1. list_1 = [4,7,3,4,1,9,8,3,7]
  2. print list(set(list_1))
复制代码

作者: zaizaicaocao    时间: 2017-10-20 17:41
aa=[4,7,3,4,1,9,8,3,7]
result=set(aa)
print(sorted(result))
作者: mysunshinee    时间: 2017-12-24 12:07
cheng_mingyi 发表于 2017-8-19 09:13
我的笨方法,看了大家的答案,真是受益匪浅!

这个不会报错么, if list_num == list_num[j]:

IndexError: list index out of range
作者: 苍翠的路    时间: 2018-4-28 19:36
# /usr/bin/env python
# -*- coding:utf-8 -*-
# 从一组数据中去除掉重复的元素,并将其排序输出

list1 = [4, 7, 3, 4, 1, 9, 8, 3, 7]
list2 = list(set(list1))
print sorted(list2) #默认的升序输出
print sorted(list2, reverse=True) #降序输出
作者: 小砂    时间: 2018-5-7 11:07
list0=raw_input('输入一组数字')
list1=list0.split(',')
list2=[]

#删除重复
for a in list1:
    if a not in list2:
        list2.append(a)
print list2

#转换格式
list3 = [];
for b in list2:
    list3.append(int(b))

#排序
list3.sort()

print list3
   
作者: irfan    时间: 2018-6-10 12:21
import random

n = int(input('please enter a number:'))
m = int(input("How many numbers do you want?"))
#随机取数的函数
def wow(n, m):
    global list0
    list0 = []
    if m <= n and m >= 1:
        i = 0
        while i < m:
            list0.append(random.randint(1, n))
            i += 1
        print(list0)
    else:
        m = int(input("The number should <=n and >=1: "))
        wow(n, m)

wow(n, m)
list1 = list(set(list0))#不懂为啥自己就排序了。。。
print(list1)
作者: 金胜利    时间: 2018-6-13 14:28
def filter(list2):
   print (sorted(set(list2)))
  
list1=[4,7,3,4,1,9,8,3,7]
filter(list1)
作者: 花花啊    时间: 2018-8-24 14:50
#coding:utf-8
li1=[4,7,3,4,1,4,9,1,8,3,7]
li2=[]
for i in li1:
    if i not in li2:
        li2.append(i)

print sorted(set(li2))
作者: FERRYMAN    时间: 2021-2-12 11:57
  1. import re

  2. l_str = ' ' #将l_str先设为空格以进入循环
  3. while l_str:
  4.     l_str = input('''输入一串数字(整数或小数),能将其去重并排序。回车退出:\n(形式类似于"1,9,2,8,5")\n''')
  5.     l_num = [float(l) for l in re.findall(r'\b\d+\.?\d*\b',l_str)]
  6.     #用float()和正则表达式中的'\.?\d*'防止输入数字为浮点数
  7.     print(','.join([str(i) for i in sorted(set(l_num))]))
  8.     print()
复制代码
这个程序能接受浮点数

老师能看看吗?

欢迎老师的评价和建议

还有一个问题,就是无论输入的是整数还是浮点数,最后输出的都会是浮点数

老师能教一下我,怎样把浮点数末尾无效的零去掉吗?

谢谢啦!

作者: crossin先生    时间: 2021-2-12 23:58
FERRYMAN 发表于 2021-2-12 11:57
这个程序能接受浮点数

老师能看看吗?

str(i).rstrip('0')
作者: FERRYMAN    时间: 2021-2-13 11:43
crossin先生 发表于 2021-2-12 23:58
str(i).rstrip('0')

谢谢老师!问题解决了
作者: chinaso1111    时间: 2021-7-6 20:12
set([4,7,3,4,1,9,8,3,7])
这个答案对吗?输出结果是正确的,但我看大家都写的那么多,
作者: crossin先生    时间: 2021-7-6 23:50
chinaso1111 发表于 2021-7-6 20:12
set([4,7,3,4,1,9,8,3,7])
这个答案对吗?输出结果是正确的,但我看大家都写的那么多, ...

对的
作者: chinaso1111    时间: 2021-7-7 12:44
crossin先生 发表于 2021-7-6 23:50
对的

谢谢corssin老师,
我基础知识不太扎实,刚开始学习,请多指导!
作者: llnever    时间: 2021-7-15 21:57
本帖最后由 llnever 于 2021-7-15 22:01 编辑
  1. #提示语
  2. print('从一组数据中去除掉重复的元素,并将其排序输出\n')
  3. t=input('输入一串数字,用空格隔开,按回车确认\n')
  4. #准备工作
  5. l=t.split()
  6. s=[min(l)]
  7. d=0
  8. n=len(l)
  9. #循环开始
  10. while n>=1:
  11.     for i in range(n):
  12.         if l==min(l):
  13.             if l[i]>s[d]:
  14.                 s.append(min(l))
  15.                 d=d+1
  16.             del l[i]
  17.             break
  18.     n=n-1
  19. #得出结论
  20. print(s)
  21. #不知道set,sort,只好这么做了,思路是遍历输入的数字列表,找到最小的,append到另一个列表s中,将这个最小的删除。重复。
复制代码

作者: ZZZZZ    时间: 2021-7-21 18:48
  1. print(
  2.     ', '.join(
  3.         map(
  4.             str,
  5.             sorted(
  6.                 list(
  7.                     set(
  8.                         map(
  9.                             int,
  10.                             input()
  11.                             .split(', ')
  12.                         )
  13.                     )
  14.                 )
  15.             )
  16.         )
  17.     )
  18. )
复制代码

作者: crossin先生    时间: 2021-7-22 23:50
ZZZZZ 发表于 2021-7-21 18:48

恶意炫技
作者: ZZZZZ    时间: 2021-7-24 20:04
crossin先生 发表于 2021-7-22 23:50
恶意炫技

N层嵌套




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5