```go
def foo(x, y):
print x, y
alist = [1, 2]
adict = {
'x': 1, 'y': 2}
foo(*alist) # 1, 2foo(**adict) # 1, 2
>>> x = 3>>> 1 < x < 5True>>> 4 > x >=3True
>>> def foo(x=[]):
... x.append(1)
... print x
...>>> foo()
[1]>>> foo()
[1, 1]
更安全的做法是:
>>> def foo(x=None):... if x is None:... x = []... x.append(1)... print x
...>>> foo()
[1]>>> foo()
[1]
>>>
>>> print "Hello %(name)s !" % {
'name': 'James'}
Hello James !>>> print "I am years %(age)i years old" % {
'age': 18}
I am years 18 years old
更新些的格式化:
>>> print "Hello {name} !".format(name="James")
Hello James !
可以用步长 -1 来反转链表:>>> a = [1, 2, 3, 4, 5]>>> a[::2]
[1, 3, 5]>>> a[::-1]
[5, 4, 3, 2, 1]>>>
[(i, j) for i in range(3) for j in range(i)]
[(1, 0), (2, 0), (2, 1)]
列表推导构造permutation:可以用 itertools.permutations 来实现。
In[47]: a = ‘abcd’In[48]: [i+j+k for i in a for j in a.replace(i,’’)for k in a.replace(i,’’).replace(j,’’)]Out[48]:
[‘abc’, ‘abd’, ‘acb’, ‘acd’, ‘adb’, ‘adc’, ‘bac’, ‘bad’, ‘bca’, ‘bcd’, ‘bda’, ‘bdc’, ‘cab’, ‘cad’, ‘cba’, ‘cbd’, ‘cda’, ‘cdb’, ‘dab’, ‘dac’, ‘dba’, ‘dbc’, ‘dca’, ‘dcb’]
注意打开的模式: “w+” 而不能 “w” , 当然 “a” 是可以的
>>> print >> open("somefile", "w+"), "Hello World"
>>> a, b, *rest = range(10)
>>> a0>>> b1>>> rest
[2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> first, second, *rest, last = range(10)
>>> first0>>> second1>>> last9>>> rest
[2, 3, 4, 5, 6, 7, 8]
其实第三个参数是来求模的: pow(x, y, z) == (x ** y) % z,注意,内置的 pow 和 math.pow 并不是一个函数,后者只接受2个参数。
>>> pow(4, 2, 2)0>>> pow(4, 2, 3)1
enumerate 很赞,可以给我们索引和序列值的对, 但是它还有第二个参数,这个参数用来: 指明索引的起始值。
>>> lst = ["a", "b", "c"]>>> list(enumerate(lst, 1))
[(1, 'a'), (2, 'b'), (3, 'c')]
在Python 2.7 之后可以这么声明一个集合。
>>> {
1,2,3}
set([1, 2, 3])
>>> a = [1, 2, 3, 4, 5, 6, 7]>>> a[1:4] = []>>> a
[1, 5, 6, 7]
当然用 del a[1:4] 也是可以的,去除偶数项(偶数索引的):
>>> a = [0, 1, 2, 3, 4, 5, 6, 7]
>>> del a[::2]
>>> a[1, 3, 5, 7]
这个真的鲜为人知, 我们可以用 isinstance(x, (float, int)) 来判断 x 是不是数,也就是那个元组里面是 或 的关系,只要是其中一个的实例就返回 True。
isinstance(1, (float, int))True isinstance(1.3, (float, int))True isinstance(“1.3”, (float, int))False
还有很多使用技巧,想获得更多基础学习资源,可以看小编主页吖