1、使用*号来展开序列,*是序列展开,每个元素都当做一个参数。
ls = (1, 2, 3);
foo(ls),这样foo只有一个参数,就是ls这个列表本身
foo(*ls), foo得到3个参数,分别为1 2 3,等价于foo(1,2,3)
2、python 读写文件中w与wt ; r与rt 有何区别?
't' 表示‘text mode’, 相对应的是"binary mode'
就是说你是以文本模式打开,还是二进制模式打开。因为默认就是文本模式,所以'rt' 等价于'r'
3、int64与int的区别?
1)int是python的基本类型,而int64是numpy中引入的一个类,即 numpy.int64;
2)使用numpy模块中的numpy.sum()方法得到的结果是int64,而使用默认的sum()得到结果的int类型;
下面代码中,虽然执行结果a和b的数值都是6,但是类型不同
1 importnumpy as np2 #a 的类型是int64
3 a = np.sum([1,2,3])4 #b 的类型是int
5 b = sum([1,2,3])
3)int64不会报除0的错误(事实上numpy中的其他类型也不会报错,比如float64等);而int会报除0错误(其他基本类型也会,比如float等)
测试如下:表明numpy 的数据类型(int64、float64等)比python的基本类型(int、float等)功能强大,计算能力更强,可以有nan、inf等结果
1 importnumpy as np2 #-------- int 例子 -------------
3 #也可以写int(1),也可不写,因为默认是int类型
4 a = 1
5 b =06 c =07
8 #下面都会报 int 不能除0错误
9 r1 = a /b10 r2 = b /c11 #下面都会报 float 不能除0错误
12 r3 = a *1.0 /b13 r4 = b *1.0 /c14
15 #--------- int64 例子 -----------
16
17 a = np.int64(1)18 b =np.int64(0)19 c =np.int64(0)20
21 #下面语句不会除0报错,会提示,但不报错和中断
22 #运行结果: r1 = 0 , r2 = 0
23 r1 = a /b24 r2 = b /c25
26 #运行结果: r3 = inf ,r4 = nan
27 #inf 表示无穷大,nan表示not a number ,不是数字
28 r3 = a *1.0 /b29 r4 = b *1.0 / c
4、type()函数可用于返回某个数据的数据类型;
1 a = 1
2 type(a)
5、& 跟 and 的区别?
& 是位运算;and 是逻辑运算。
>>> a = 1
>>> b = 2
>>> #1 的二进制是 01,2的二进制是 10
>>> a&b
0>>> a andb2
&虽然是位运算,但是如果操作数是0或1的话,也类似于逻辑运算;
>>> a=1
>>> b=1
>>> c=0>>> a &b1
>>> a &c
0
6、Lambda 表达式有何用处?如何使用?
【引言】这是python支持一种有趣的语法,它允许你快速定义单行的最小函数(请记住它本质就是个函数),类似C语言中的宏,可以用在任何需要函数的地方,示例如下:
>>> g = lambda x: x * 2
>>> g(3)
6
>>> (lambda x: x * 2)(3)
6
我们也可以把filter map reduce 和lambda结合起来用,函数就可以简单的写成一行。例如
>>>kmpathes = filter(lambda kmpath: kmpath, map(lambda kmpath: string.strip(kmpath), string.split(l, ':')))
看起来麻烦,其实就像用语言来描述问题一样,非常优雅。
对 l 中的所有元素以':'做分割,得出一个列表。对这个列表的每一个元素做字符串strip,形成一个列表。对这个列表的每一个元素做直接返回操作(这个地方可以加上过滤条件限制),最终获得一个字符串被':'分割的列表,列表中的每一个字符串都做了strip,并可以对特殊字符串过滤。
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:涛吴
链接:http://www.zhihu.com/question/20125256/answer/14058285