设为首页收藏本站

Crossin的编程教室

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

【每日一坑 3】 找数字

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2013-12-17 19:11:45 |显示全部楼层 |倒序浏览

昨天的坑,已经有很多人填了。python一行代码就可以搞定这件事,有很多人直接就在微信里回复了解答:
sorted(set(li))

其中li是一个包含重复元素的list。当然你还需要更多一些代码让这个程序更完整。

论坛上也有c语言的版本,相比之下要比python长很多。不过我觉得这只是不同语言的特性不一样,适合不同的场景,并无优劣之分。平常解决一些小问题,我更喜欢用python。

今天的坑:
有一个字符串
text = "aAsmr3idd4bgs7Dlsf9eAF"

请将text字符串中的数字取出,并输出成一个新的字符串。


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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2013-12-21 21:22:28 |显示全部楼层
scz_000 发表于 2013-12-21 00:41
代码要简短,运行时间也很重要嘛~测试了一下运行时间,1000000次的测试正则要比遍历快5秒,不知道有没有更 ...

有意思。
如果正则compile之后再查找,应该会更快
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2013-12-22 23:46:36 |显示全部楼层
大概就是
  1. import re
  2. p = re.compile('\d')
  3. m = p.findall( 'aAsmr3idd4bgs7Dlsf9eAF' )
  4. print ''.join(m)
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2014-1-9 11:17:31 |显示全部楼层
nemo 发表于 2014-1-5 20:58
为啥我这单次测总是正则快,repeat后就变成遍历快了?

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2014-3-4 19:08:27 |显示全部楼层
fl0w 发表于 2014-3-4 12:03
可否解释一下这个正则表达式,|在[]内是什么意思?

中括号中间的竖线表示分组,就是符合前一组规则也行,符合后一组规则也行。
在这里,不加竖线也是一样的效果。
另外由于我们的题目中没有小数点,所以不加点结果也是一样的。

顺说一句,中括号中的点就是点,否则则是表示 除换行符以外的任意字符
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2014-3-5 15:45:53 |显示全部楼层
fl0w 发表于 2014-3-5 08:58
先生可不可以举个例子说说中括号内一定需要加竖线的情况

我试了下
中括号里的竖线就只是表示匹配|这个字符
中括号本身就有了多匹配的功能,和竖线的功能是类似的,放在一起也没有什么用
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

7#
发表于 2015-9-1 17:43:20 |显示全部楼层
十二君 发表于 2015-9-1 03:43
不知道为什么,总觉得对于正则表达式的理解不够到位。

正则本身就是个巨大的坑,我每次用都还要试一番
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 2016-8-9 17:01:35 |显示全部楼层
bingdashen 发表于 2016-8-8 20:18
新手试试水,楼主看看这个怎么样?
text="aAsmr3idd4bgs7DIsf9eAF"
a=list(text)

可以,你这是python3吧
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

9#
发表于 2017-6-8 09:58:04 |显示全部楼层
qingri 发表于 2017-6-7 23:22
# 3
# find all the numbers and combine them to a new string
import re

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

10#
发表于 2017-9-26 20:12:28 |显示全部楼层
yy58710623 发表于 2017-9-26 18:22
text = "aAsmr3idd4bgs7Dlsf9eAF"
l=[]
for i in text:

字符也可以比较大小,按字母顺序
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-8 17:54 , Processed in 0.031823 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部