0


1

有哪些被忽略但是比较实用的Python语法或者技巧:

  • 尽量找Python语言的核心类库
  • 一个特性一个回答
  • 第一行粗体显示特性,用例子或说明补充
添加评论
1


追求运行效率时,连接字符串尽量用join

一般来说,要连接多个字符串,用操作符“+”即可。这是最通俗易懂的、自然的做法。

比如:

largeString = small1 + small2 + ' something ' + small3 + ' yet more'

但其实:

Python中字符串对象是不可变的(immutable)。因此,任何对字符串的操作,包括字符串连接,都将生成新的字符串对象,而不是修改原有的字符串。连接N个字符串就会涉及到创建然后立即丢弃N-1个作为中间结果的字符串。因此,那些不产生中间结果而一次生成结果的操作的效率就会高得多。

所以,如果在某些情况下,执行效率很重要时,应该考虑使用:

largeString = ''.join(pieces)

两种效率,一个是平方增长,一个是线性增长。所以,在特定情况下,后者的优势很明显。

参见:《Python食谱-1.6.连接字符串》

添加评论
1


轻松填空:字符串格式化操作符%

看下面的例子即可不言而喻。

largeString = '%s%s something %s yet more' % (small1, small2, small3)

参见:(仍然是)《Python食谱-1.6.连接字符串》

添加评论
0


联比操作符:

>>> x = 5
>>> 1 < x < 10
True
>>> 10 < x < 20 
False
>>> x < 10 < x*10 < 100
True
>>> 10 > x <= 9
True
>>> 5 == x > 4
True

可以拿一个变量同时和两个值进行比较,语法更为简练。 比如,“10 > x <= 9” 表示 “x < 10 and x <=9”。

添加评论
0


list的切片

a = [1,2,3,4,5]
>>> a[::2]  # 迭代的步进为2
[1,3,5]

常常用步进为-1来倒排一个集合:

>>> a[::-1]
[5,4,3,2,1]
添加评论
0


避免创建迭代对象

如果写

x=(n for n in foo if bar(n))

可以避免创建迭代对象。而如果写下面的语句就会需要更多的内存空间存放不必要的迭代对象;

x = [n for n in foo if bar(n)]

有时候明白这里面的区别可以大大提高代码运行效率。

添加评论
0


多变量平行赋值

看例子就明白了。

计算斐波那契数列头两个数字:

a, b = 0, 1
while a < 100:
    a, b = b, a + b
    print(a, b)

注意:在这个例子中,如果把

a, b = b, a + b

拆分为

a = b
b = a + b

就错了。

添加评论




Made with Django.

当前版本: R-0127-20090523

cc-wiki