设为首页收藏本站

Crossin的编程教室

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

【每日一坑 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
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2013-12-17 13:38:24 |显示全部楼层
byron 发表于 2013-12-16 22:11
哇,sample真好用。
不过,应该是n+1才对,哈哈

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2015-8-3 13:57:05 |显示全部楼层
Lisbeth.M 发表于 2015-8-3 07:53
我看见有人的答案是sorted(set((4, 7, 3, 4, 1, 9, 8, 3, 7)))
然后我单独地打看看有什么效果,其实set(* ...

set确实也带排序功能
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2016-3-16 23:55:21 |显示全部楼层
mike90326 发表于 2016-3-16 15:10
Crossin 老师可以帮忙看看嘛,要疯掉了。。。我觉得其他部分都没什么问题,只是在 Not_contain(list,elemen ...

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

不过其实不用这么麻烦,python自带了in方法:
if element not in list:
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2016-9-8 19:08:32 |显示全部楼层
pythonnm 发表于 2016-9-8 16:09
from random import randint
m=18
n=20

这个入门课程里没有专门说。
python里的set是集合,它的特点是元素不重复。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2017-3-6 14:44:01 |显示全部楼层
huiwenwu 发表于 2017-3-6 12:02
要是只想删掉重复的部分,不排序呢?

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

因为这是个set对象。如果要转回list,就写成 list(set(a))
如果你想保留原顺序,那用set直接做不到,得再自己处理
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

7#
发表于 2021-2-12 23:58:35 |显示全部楼层
FERRYMAN 发表于 2021-2-12 11:57
这个程序能接受浮点数

老师能看看吗?

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 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
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

9#
发表于 2021-7-22 23:50:04 |显示全部楼层
ZZZZZ 发表于 2021-7-21 18:48

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

使用道具 举报

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

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

GMT+8, 2024-5-3 01:20 , Processed in 0.027445 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部