偶然间在实验楼上看到一篇文章【震惊小伙伴的单行代码—Python篇】,觉得还蛮有趣的,所以就想看看,但是我自己的电脑没有python环境,所以就直接利用实验楼上的在线python环境对文章里的10个单行python代码进行了实践。
原文这里就不粘贴了,直接点上面那个链接进去看就行了,或者去搜索也肯定有。
图一:
如上图:
- 第一条是:让列表中的每个元素都乘以2,代码如下:
print map(lambda x: x * 2, range(1,11))
- 第二条是:求列表中的所有元素之和,代码如下:
print sum(range(1,1001))
- 第三条是:判断一个字符串中是否存在某些词,代码如下:
wordlist = ["scala", "akka", "play framework", "sbt", "typesafe"]
tweet = "This is an example tweet talking about scala and sbt."
print map(lambda x: x in tweet.split(),wordlist)
但是发现有问题,因为sbt
明明也在里面啊,但是却显示Flase
,后来一检查,发现后面紧跟着多了一个·
,所以第一次的时候判断没有,第二次就有了。
图二:
这一条呢是:读取文件,代码如下:
print open("ten_one_liners.py").readlines()
开始的时候没有创建ten_one_liners.py
,因此报错,后来一想,真是笨死了,所以创建了文件,并简单写了几句话。
图三:
上图中的
- 第一条是:祝你生日快乐!代码如下:
print map(lambda x: "Happy Birthday to " + ("you" if x != 2 else "dear Name"),range(4))
但是,是不是哪里有问题啊?要是第三个dear name
可以自己输入名字就更好了,是可以实现的,但是我没做;
- 第二条是:过滤列表中的数值,代码如下:
print reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49, 58, 76, 82, 88, 90],([],[]))
图四:
这个就是打印最小或者最大的数字了,其实也没啥好震惊的感觉,代码如下:
print min([14, 35, -7, 46, 98])
print max([14, 35, -7, 46, 98])
图五:
这一条就是:并行处理了,代码如下:
import multiprocessing
import math
print list(multiprocessing.Pool(processes=4).map(math.exp,range(1,11)))
图六:
这一条就是:“Sieve of Eratosthenes”算法,Python里没有Sieve of Eratosthenes操作符,代码如下:
n = 50 # We want to find prime numbers between 2 and 50
print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1))))
第一次呢,可以看到出错了,错误是unexpectde indent
,啥原因呢,就是“错误的使用缩进量”,因为在python中缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。
嗯,和原文对比,还有一条没有做出来,是“获取XML web service数据并分析”,因为要吃饭了,加上做了2遍也是报错,所以先放着,有时间再弄。这里先把代码放出来吧,有做出来的也可以私信给我哦,毕竟我也是python小白啊,学习学习~
from xml.dom.minidom import parse, parseString
import urllib2
# 注意,我将它转换成XML格式化并打印出来
print parse(urllib2.urlopen("http://search.twitter.com/search.atom?&q=python")).toprettyxml(encoding="utf-8")
还蛮有趣的,可以试试!如果没有开发环境的话,推荐上实验楼利用他们的在线开发环境试试也好,记得前段时间的那个微信扫描,就直接给出哪些人拉黑了你么?我就是在实验楼上玩的。