首页 > 代码库 > Python学习笔记1

Python学习笔记1

1.基础知识

·       用于实现整除的操作符://

·       幂运算符:**

·       Python中变量没有类型。类型的强制转换使用函数int(32.9);而C中强制转换使用(int)32.9

·       round():将浮点数四舍五入;floor():向下取整;ceil():向上取整

·       跨多行的字符串使用三个引号”””zhang”””’’’zhang’’’;或者每行最后加反斜线\

·       在字符串前加r表示为原始字符串:r”python”。原始字符串不会把反斜线当作特殊字符,在其中输入的每个字符都会与书写的方式保持一致。

>>> print r‘This is illegal\‘

SyntaxError: EOL while scanning string literal

>>> print r‘This is illegal\\‘

This is illegal\\

2.列表与元组

注意:列表可以修改,而元组和字符串不可以修改。列表方法会直接原地修改列表,而元组和字符串方法方法只会生成修改后的副本。

序列通用操作:

·       分片:[1:10],[:10],[1:],[-3:],[:],[10:0:-2],[::4]

·       加法:序列的连接操作;乘法:序列扩倍

>>> [1,2,3]+[4,5,6]

[1, 2, 3, 4, 5, 6]

>>> [1,2,3]*3

[1, 2, 3, 1, 2, 3, 1, 2, 3]

·       in运算符检查成员资格

·       len,max,min分别求长度,最大值和最小值

列表:

·       list()将序列转换为列表

·       del name[2] 删除元素

·       分片赋值:

name[2:] = list(‘ilei’)

#增加元素

>>> numbers = [1,5]

>>> numbers[1:1] = [2,3,4]

>>> numbers

[1, 2, 3, 4, 5]

#删除元素

>>> numbers[1:4] = []

>>> numbers

[1, 5]

·       列表方法:append,count,extend,index,insert,pop,remove,reverse,sort。可模仿下图查看方法的具体功能。

image

 

·       使用关键字参数cmp,key,reverse进行高级排序:

>>> x=[‘zhang‘,‘lei‘,‘leii‘]

>>> x.sort(key=len)

>>> x

[‘lei‘, ‘leii‘, ‘zhang‘]

>>> x=[4,6,3,8,9]

>>> x.sort(reverse=True)

>>> x

[9, 8, 6, 4, 3]

>>> x=[4,6,3,8,9]

>>> x.sort(cmp)

>>> x

[3, 4, 6, 8, 9]

元组:

·       如果用逗号分隔了一些值,那么就自动创建了元组。

·       tuple()函数将序列转换为元组

3.字符串

·       字符串格式化

>>> "zhang %s lei" % ‘lei‘

‘zhang lei lei‘

>>> "zhang %s %s" % (‘lei‘,‘lei‘)#只能是元组或者字典,不能是列表

‘zhang lei lei‘

>>> ‘%*.*f‘%(10,2,3.1415926)

      3.14‘

>>> ‘%10.2f‘% 3.1415926

      3.14‘

·       字符串常量string.digits,string.letters,string.lowercase,string.uppercase,string.printable,string.punctuation

·       字符串方法:find,join,lower,replace,split,strip,translate

>>> import string

>>> table = string.maketrans(string.lowercase,string.uppercase)

>>> ‘zhangleilei‘.translate(table)

‘ZHANGLEILEI‘

>>> ‘*/*/**/py**/t/*hon*/*/*///‘.strip(‘/*‘)

‘py**/t/*hon‘

4.字典

注意:字典中并无最后的元素或其他有关顺序的概念。

·       dict()通过键值序列对或者关键字参数创建字典

·       字典的格式化字符串:

>>> d = {‘John‘:90,‘Andy‘:99,‘Joe‘:60}

>>> "Joe‘s grade is %(Joe)d." % d

"Joe‘s grade is 60."

·       字典方法:clear,copy,fromkeys,get,has_key,items,iteritems,keys,iterkeys,values,itervalues,pop,popitem,setdefault,update

5.条件、循环和其他语句

·       print:逗号变空格

>>> print ‘zhang‘,‘leilei‘

zhang leilei

·       import

>>> import math

>>> from math import sqrt

>>> sqrt(9)

3.0

>>> from math import sqrt as func

>>> func(9)

3.0

>>> import math as func

>>> func.sqrt(9)

3.0

·       赋值(逗号连起来的数组成序列,下述操作称为序列解包)

>>> x,y,z = 1,2,3

>>> print x,y,z

1 2 3

>>> x,y = y,x

>>> print x,y,z

2 1 3

>>> d = {‘John‘:90,‘Andy‘:99,‘Joe‘:60}

>>> key,value = http://www.mamicode.com/d.popitem()

>>> print key,value

John 90

>>> x=y=z=99

>>> print x,y,z

99 99 99

·       条件语句

1)         为假的内容:False,None,0,空序列,空字典

2)         is:同一性运算符;==:相等运算符;and,or,not:布尔运算符

>>> 0 and 2+3

0

>>> 1+2 and 2+3

5

>>> 0 or 1+2

3

>>> 1+2 or 0

3

>>> not 1+3

False

3)         三元运算符

>>> ‘Yes‘ if 1>2 else ‘No‘

‘No‘

·       断言,确保程序中的某个条件为真才能让程序正常工作。

>>> age = 10

>>> assert 0<age<100 ,"Pay attention to the range!"

>>> age = -1

>>> assert 0<age<100 ,"Pay attention to the range!"

 

Traceback (most recent call last):

  File "<pyshell#66>", line 1, in <module>

    assert 0<age<100 ,"Pay attention to the range!"

AssertionError: Pay attention to the range!

·       for循环

>>> #序列解包

>>> d = {‘x‘:1,‘y‘:2,‘z‘:3}

>>> for key,value in d.items():

print key ,‘is‘ , value

 

 

y is 2

x is 1

z is 3

>>> #并行迭代1

>>> names = [‘Joe‘,‘Grace‘,‘John‘]

>>> ages  = [10,12,6]

>>> for i in range(len(names)):

print names[i],‘is‘,ages[i],‘years old!‘

 

 

Joe is 10 years old!

Grace is 12 years old!

John is 6 years old!

>>> #并行迭代2

>>> for name,age in zip(names,ages):

print name ,‘is‘,age,‘years old!‘

 

 

Joe is 10 years old!

Grace is 12 years old!

John is 6 years old!

>>> zip(names,ages)#zip()将两个序列压缩在一起,然后返回一个元组的列表

[(‘Joe‘, 10), (‘Grace‘, 12), (‘John‘, 6)]

>>> #编号迭代

>>> for index,name in enumerate(names):

if ‘J‘ in name:

    names[index] = ‘feynman‘

 

   

>>> names

[‘feynman‘, ‘Grace‘, ‘feynman‘]

>>> enumerate(names)#enumerate()在提供索引的地方迭代索引值对

<enumerate object at 0x01F05800>

·       while True/break

·       轻量级循环——列表推导式(利用其它列表创建新列表)

>>> [x*x for x in range(10)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> [x*x for x in range(10) if x > 5]

[36, 49, 64, 81]

>>> [(x,y) for x in range(3) for y in range(3)]

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

>>> boys = [‘alice‘,‘bernice‘,‘clarice‘]

>>> girls = [‘chris‘,‘arnold‘,‘bob‘]

>>> [b+‘+‘+g for b in boys for g in girls if b[0] == g[0]]

[‘alice+arnold‘, ‘bernice+bob‘, ‘clarice+chris‘]

6.函数

·       文档字符串

>>> def func(x):

‘Calculate f(x)‘

return 2*x

 

>>> func(5)

10

>>> func.__doc__

‘Calculate f(x)‘

·       参数

1)   列表作为形参时,列表的值可以在函数中被修改。

2)   关键字参数,(提供形参的名字,同时可以为参数提供默认值)

>>> def hello(greeting = ‘Hello‘,name = ‘world‘):

print greeting,name,‘!‘

 

 

>>> hello()

Hello world !

>>> hello(‘Hi‘)

Hi world !

>>> hello(‘Hey‘,‘Joe‘)

Hey Joe !

>>> hello(name = ‘Grace‘)

Hello Grace !

3)   收集参数:’*’把收集的参数作为元组;’**’把收集的关键字参数作为字典

>>> def f(p1,*p):

print p1

print p

 

 

>>> f(‘zhang‘,1,2,3)

zhang

(1, 2, 3)

>>> f(‘zhang‘,1)

zhang

(1,)

>>> f(‘zhang‘)

zhang

()

>>> def ff(p1,**p):

print p1

print p

 

 

>>> ff(‘zhang‘,name=‘Joe‘,age=5)

zhang

{‘age‘: 5, ‘name‘: ‘Joe‘}

>>> ff(‘zhang‘)

zhang

{}

反转过程:’*’把元组作为位置参数;’**’把字典作为关键字参数

>>> def withstars(**kwds):

print kwds[‘name‘],‘is‘,kwds[‘age‘],‘years old!‘

 

 

>>> def withoutstars(kwds):

print kwds[‘name‘],‘is‘,kwds[‘age‘],‘years old!‘

 

 

>>> args = {‘name‘:‘Joe‘,‘age‘:5}

>>> withstars(**args)

Joe is 5 years old!

>>> withoutstars(args)

Joe is 5 years old!

·       作用域

1)  变量和所对应的值用的是一个不可见的字典,内建的vars()函数可以返回这个字典。

>>> x,y,z = 1,2,3

>>> vars()[‘x‘]

1

2)  每次函数调用会创建新的作用域。如果全局变量和局部变量的名字相同,可以使用globals()获取全局变量的值。

>>> def f(x):

return x+globals()[‘x‘]

 

>>> f(5)

6

3)  如果想在函数中修改全局变量的值,必须使用global对全局变量进行声明。假如在函数内部将值赋予一个变量,它会自动成为局部变量,除非使用global对其进行声明。

>>> def g():

global x

x += 1

 

 

>>> x

1

>>> g()

>>> x

2