设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 108881|回复: 60
打印 上一主题 下一主题

【每日一坑 2】 去除重复

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
#
发表于 2013-12-16 21:22:43 |只看该作者 |正序浏览
上周挖了每日一坑的第一坑:随机取数。大家很给力,论坛上已经有了十多份解答。(包括一份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




#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

9

主题

2

好友

164

积分

注册会员

Rank: 2

60#
发表于 2021-7-24 20:04:57 |只看该作者
crossin先生 发表于 2021-7-22 23:50
恶意炫技

N层嵌套
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

59#
发表于 2021-7-22 23:50:04 |只看该作者
ZZZZZ 发表于 2021-7-21 18:48

恶意炫技
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

9

主题

2

好友

164

积分

注册会员

Rank: 2

58#
发表于 2021-7-21 18:48:00 |只看该作者
  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. )
复制代码
回复

使用道具 举报

0

主题

0

好友

8

积分

新手上路

Rank: 1

57#
发表于 2021-7-15 21:57:02 |只看该作者
本帖最后由 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中,将这个最小的删除。重复。
复制代码
回复

使用道具 举报

0

主题

1

好友

21

积分

新手上路

Rank: 1

56#
发表于 2021-7-7 12:44:27 |只看该作者
crossin先生 发表于 2021-7-6 23:50
对的

谢谢corssin老师,
我基础知识不太扎实,刚开始学习,请多指导!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

55#
发表于 2021-7-6 23:50:42 |只看该作者
chinaso1111 发表于 2021-7-6 20:12
set([4,7,3,4,1,9,8,3,7])
这个答案对吗?输出结果是正确的,但我看大家都写的那么多, ...

对的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

21

积分

新手上路

Rank: 1

54#
发表于 2021-7-6 20:12:01 |只看该作者
set([4,7,3,4,1,9,8,3,7])
这个答案对吗?输出结果是正确的,但我看大家都写的那么多,
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

53#
发表于 2021-2-13 11:43:29 |只看该作者
crossin先生 发表于 2021-2-12 23:58
str(i).rstrip('0')

谢谢老师!问题解决了
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

52#
发表于 2021-2-12 23:58:35 |只看该作者
FERRYMAN 发表于 2021-2-12 11:57
这个程序能接受浮点数

老师能看看吗?

str(i).rstrip('0')
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

51#
发表于 2021-2-12 11:57:55 |只看该作者
  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()
复制代码
这个程序能接受浮点数

老师能看看吗?

欢迎老师的评价和建议

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

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

谢谢啦!
回复

使用道具 举报

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

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

GMT+8, 2024-11-23 17:41 , Processed in 0.018241 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部