继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python初步--笔记

阿萌萌1128
关注TA
已关注
手记 3
粉丝 0
获赞 4

第一章 Python变量和数据类型

1-1 Python中的数据类型

一、整数

Python可以处理任意大小的整数,当然包括负整数。

①普通整数:写法一样,例如:1,100,-8080,0。

②十六进制:用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

二、浮点数

①普通浮点数:直接用数学写法,如1.23,3.14,-9.01,等等。

②科学计数法:把10用e替代,即:1.23x10^9记为1.23e9或12.3e8,0.000012可以写成1.2e-5

注:整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

三、字符串

①字符串是以''或""括起来的任意文本。

比如'abc'"xyz"等等。字符串'abc'只有a,b,c这3个字符。

四、布尔值

①在Python中,可以直接用True、False表示布尔值(请注意大小写)

②通过布尔运算计算出来。

③布尔值可以用and、or和not运算。

and运算是与运算,只有所有都为 True,and运算结果才是 True。

or运算是或运算,只要其中有一个为 True,or 运算结果就是 True。

not运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。

五、空值

空值是Python里一个特殊的值,用None表示。

None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

1-2print输出

①print语句可以向屏幕上输出指定的文字。比如输出'hello, world'

②print语句也可以跟上多个字符串,用逗号“,”隔开,遇到逗号“,”会输出一个空格,这样就可以连成一串输出:

③print也可以打印整数,或者计算结果

1-3 变量

①变量不仅可以是数字,还可以是任意数据类型。

②变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头

③在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量(动态语言)。

1-4 字符串

如果字符串包含",我们就可以用' '括起来表示

对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义:

\’表示‘

\”表示 ”

\n 表示换行

\t 表示一个制表符

\\ 表示 \ 字符本身

1-5 输出字符串

①若一个字符串包含很多需要转义的字符,在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了

②表示多行字符串,可以用'''...'''表示

③用r'''...'''把多行字符串变成raw字符串

④输出中文:在第一行添加注释:# -*- coding: utf-8 -*-,然后输出时用u'...',其余同上

 

1-6 整数与浮点数的运算

整数运算结果仍然是整数,浮点数运算结果仍然是浮点数,但是整数和浮点数混合运算的结果就变成浮点数了。

1-7 布尔运算

and 和 or 运算的一条重要法则:短路计算

① 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

②在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。


第二章  List、tuple、dict、set

dict查找速度快占用内存大;list随着元素的增多查找速度逐渐下降,但占用内存小

List:有序,可变

Tuple:有序,不可变

Dict:无序,key不能重复、不可变(所以list就不能作为key)

Set:无序,元素不重复、不可修改但可以增加和删除

2-1 List

list是一种有序的集合,元素顺序排列,可以随时添加和删除其中的元素。list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据。

创建L = ['Michael', 100, True]。

正序访问例:L[0]、L[1]...由于list是一个有序集合,所以按照索引来访问list中的指定元素。使用索引时,千万注意不要越界

   倒序访问例:L[-1]、L[-2]...倒数第一用 -1 表示,倒数第二用 -2 表示...使用倒序索引时,也要注意不要越界

:①L.append(元素) 方法,把新同学追加到 list 的末尾

L.insert(n,元素)方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素。原来索引为 n 的元素,以及后面的所有元素,都自动向后移动一位。

:①L.pop()方法总是删掉list的最后一个元素,并且它还返回这个元素

L.pop(n)方法删掉list的索引为n的元素,并且它还返回这个元素

:对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。

2-2 Tuple

tuple是另一种有序的列表,tuple 和 list 非常类似,但是,tuple创建完毕就不能修改了。创建tuple和创建list唯一不同之处是用( )替代了[ ]。

创建: t = ('Adam', 'Lisa', 'Bart');

: t[0],t[-1]索引方式访问元素;

不能增、删、改。

可变的tuple:

t = ('a', 'b', ['A', 'B'])

L = t[2    

L[0] = 'X'

L[1] = 'Y'

输出t:('a', 'b', ['X', 'Y'])

2-3 dict

花括号 {} 表示这是一个dict,然后按照 key: value, 加上逗号写出来即可。最后一个 key: value 的逗号可以省略。

dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

在一个dict中,key不能重复;key-value序对是没有顺序作为 key 的元素必须不可变

创建:{key: value}

d={

    '123': [1, 2, 3],  # key 是 str,value是list

    123: '123',  # key 是 int,value 是 str

    ('a', 'b'): True  # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean

}

:①dict就是通过 d[key]来查找 value。但是要先判断 key 是否存在,用if 'Paul' in d:

②使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None,用print d.get('Paul')

None

③dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:d.values()

④dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样,但是itervalues() 方法不会把dict转换成一个包含所有value的list,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

  ⑤同时迭代key和value:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

print d.items()

输出的是:[('Lisa', 85), ('Adam', 95), ('Bart', 59)]

可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,就可以同时获得key和value。和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。因此我们就可以:

for k, v in d.iteritems():

    print k,':',v

输出的是:

Lisa : 85

Adam : 95

Bart : 59

:d[key]=value

遍历:for key in d:    print key,d[key]

2-4 set

set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,且不能修改。这点和 dict 的 key很像。当我们传入包含重复元素的 list ,他会自动去掉重复的元素。

创建:调用 set() 并传入一个 list,list的元素将作为set的元素;

例:s = set(['A', 'B', 'C'])

:由于set存储的是无序集合,所以我们没法通过索引来访问。访问 set中的某个元素实际上就是判断一个元素是否在set中。例:print 'A' in s   输出:True

遍历:for name in s:    print name

:s.add(元素),若元素已在set中不会报错

:s.remove(元素),若元素不在set中会报错,所以需要先判断if 元素 in s:


第三章  一些语法

3-1 if语句

①if 语句后接表达式,然后用:表示代码块开始。

在Python交互环境下敲代码,还要特别留意缩进,4个空格,不要使用Tab,更不要混合Tab和空格,并且退出缩进需要多敲一行回车;

例如:>>> age = 20

>>> if age >= 18:

...     print 'your age is', age

...     print 'adult'

...

your age is 20

adult

②if:...else:...或if:...if not:...

③ if ... 多个elif ... else ...这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。

3-1 for、while循环

①for...in...:

例:L = ['Adam', 'Lisa', 'Bart']

for name in L:

    print name

②while...:同C语言的while循环

例:N = 10,x = 0

while x < N:

    print x

      x = x + 1

3-2 退出循环

①break:退出整个循环

②continue:退出此次循环,进入下一循环

③多重循环:双层for...in...:


第四章 函数

str(x)函数把其他类型转换成 str:

int(x)函数可以把其他数据类型转换为整数:

cmp(x, y) 比较函数就需要两个参数,如果 x<y,返回 -1,如果 x==y,返回 0,如果 x>y,返回 1

abs(x)函数求绝对值

s.upper():把字符串s转换为大写

4-1 创建一个函数:

定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

例:def my_abs(x):

    if x >= 0:

        return x

    else:

        return -x

4-2  杂记

返回多值:return x1,x2返回多值,实际上是返回单个值(x1,x2),实际上是返回一个tuple

默认参数:例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数,第二个参数是转换进制:int(x)等同于int(x,10),也可以用int(x,8)获得八进制数。函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。不传,使用默认;传了,覆盖默认。

定义可变参数:def  fn(*args): ... 在函数内部,直接把变量 args 看成一个 tuple 就好了。

List切片:L[n1:n2] 取出从L[n1]一直到L[n2-1]

①L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素;如果第一个索引是0,还可以省略:L[:3];

②也可以从索引1开始,取出2个元素出来:L[1:3];

③第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

④只用一个 : ,L[:]表示从头到尾;

倒序切片:倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。

字符串切片:‘abcdefg’[-3:]   输出:efg

索引迭代:由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。enumerate() 函数把L变成了:[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]

例:L = ['Adam', 'Lisa', 'Bart', 'Paul']

for index, name in enumerate(L):

      print index+1, '-', name

复杂表达式:生成列表print [x*(x+1)for x in range(1,100,2)]

            生成表格内容 ['<tr><td>%s</td><td>%s</td></tr>'

% (name, score) for name, score in d.iteritems()]

条件过滤[x * x for x in range(1, 11) if x % 2 == 0]      输出:[4, 16, 36, 64, 100]

多层表达:例如[m + n for m in 'ABC' for n in '123']   输出:['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']  等同于:

L = []for m in 'ABC':

    for n in '123':

        L.append(m + n)

 

 

 

 

 

 


打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP