发布网友 发布时间:2022-04-20 16:59
共1个回答
热心网友 时间:2022-04-18 07:39
1. List Comprehensions
使用list comprehension可以杜绝掉50%以上的for循环,后者的效率极其低下(可以看看C源码的实现),而且不够紧凑。
(1) Python官方的例子:
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x !=y]
运行结果得到:[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
(2) list的反转:lis[::-1]
(3) 找n以内的质数:
>>> filter(lambda number: all(number%x for x in range(2, math.sqrt(prime))), range(2,n))
(4) 凯撒密码:对于一个字符串,每个字母右移n位加密。
code = ''.join([chr((ord(ch)+n-97)%26+97) if ord('a')<=ord(ch)<=ord('z') else ch for ch in str])
2. Python的动态性
Python完爆C++一向自豪的泛型编程,模板编程,举例如下:
def build(type, value):
return type(value)
然后可以就可以build(int,0)了……是不是比C++简练多了?更牛*的:
def impose(func, value):
return func(value)
def anyfunc(value):
return value*value
print impose(anyfunc, 3) # return 9, Python 2.7
所以,在Python里类型、函数什么的全部都可以看做是操作对象(第一个例子显示了对数据类型的操作,第二个是对函数的操作)。以上所有这些Python的特性,你可能说我用C实现一个一样的就好了。诚然,你可以在C里一个个写出来自己喜欢的特性,但是你写到后面你会发现你只是重新发明了Python,然后拿C写了一个解释器,而且实现得更烂而已。Please!
Don't re-invent the wheel.