请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【每日一坑 2】 去除重复

[复制链接]

0

主题

0

好友

24

积分

新手上路

Rank: 1

发表于 2013-12-17 15:11:05 |显示全部楼层
  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])
复制代码
回复

使用道具 举报

0

主题

0

好友

21

积分

新手上路

Rank: 1

发表于 2013-12-17 15:42:59 |显示全部楼层
  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,懒得接受输入。

回复

使用道具 举报

0

主题

0

好友

65

积分

注册会员

Rank: 2

发表于 2013-12-18 00:05:21 |显示全部楼层
  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)
复制代码
回复

使用道具 举报

0

主题

0

好友

79

积分

注册会员

Rank: 2

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

...

排序里加入去掉重复的。。。
回复

使用道具 举报

0

主题

0

好友

28

积分

新手上路

Rank: 1

发表于 2014-3-5 10:37:14 |显示全部楼层
本帖最后由 苍翠的路 于 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. }
复制代码
回复

使用道具 举报

1

主题

0

好友

50

积分

注册会员

Rank: 2

发表于 2014-6-25 23:57:55 |显示全部楼层
本帖最后由 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
复制代码
回复

使用道具 举报

2

主题

0

好友

216

积分

中级会员

Rank: 3Rank: 3

发表于 2014-7-21 13:12:30 |显示全部楼层
string_1 = [4,7,3,4,1,9,8,3,7]
string_2 = list(set(string_1))
print string_2
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

发表于 2014-11-7 11:03:40 |显示全部楼层
  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.    
复制代码
回复

使用道具 举报

0

主题

0

好友

8

积分

新手上路

Rank: 1

发表于 2015-6-1 17:24:54 |显示全部楼层
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:]
回复

使用道具 举报

0

主题

0

好友

20

积分

新手上路

Rank: 1

发表于 2015-8-3 07:53:02 |显示全部楼层
我看见有人的答案是sorted(set((4, 7, 3, 4, 1, 9, 8, 3, 7)))
然后我单独地打看看有什么效果,其实set(*,*,*,*,*,*)就可以达到效果了,所以sorted有什么用啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-19 10:05 , Processed in 0.030338 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部