Skip to content

Latest commit

 

History

History
183 lines (166 loc) · 6.46 KB

File metadata and controls

183 lines (166 loc) · 6.46 KB
  • 基础知识
list: Python内置的一种数据类型,是一种有序集合
L = ['Adam', 'Lisa', 'Bart']
L[-1]:表示倒数第一个
append():在列表`末尾`添加新的元素
insert{index,val}:在指定index下标出添加val元素
pop(index):删除指定下标index的元素,如index未指定,则默认删除最末尾元素
tuple: Python中另外一种有序的列表,与list非常相似,但tuple一旦创建完毕就不能修改
t = ('Adam', 'Lisa', 'Bart')
dict:key-value结构。在一个dict中,key不允许重复,且值不可变
d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
len():表示dict中key-value个数
set:set持有一系列元素,这一点和list很像,但set的元素没有重复的,且无序
s = set(['A', 'B', 'C'])

L = range(1, 101)//1~100的数组

print L[0:10]//输出下标0~9的数
print L[2::3]//从第二个开始
print L[4:50:5]//不大于50的5的倍数
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in zip(range(1,5),L):
    print index, '-', name
1、zip把两个list变成一个list。zip([10, 20, 30], ['A', 'B', 'C']) = [(10, 'A'), (20, 'B'), (30, 'C')]
def toUppers(L):
    return [x.upper() for x in L if isinstance(x, str)]
print toUppers(['Hello', 'world', 101])
1、isinstance(x, str) 可以判断变量 x 是否是字符串
2、字符串的 upper() 方法可以返回大写的字母
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0.0
for k, v in d.items():
    sum = sum + v
    print k, ':', v
print 'average', ':', sum/len(d.items())
1、items() 方法把dict对象转换成了包含tuple的list。d.items()=[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
2、len()返回长度
  • 函数式编程
map(f,list):
            接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
            
reduce(f,list):
            reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须  
            接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值.   
            同时reduce函数也可以接受第三个值作为计算的初始值。如reduce(f, [1, 3, 5, 7, 9], 100) = 125
           
filtert(f, list):
            filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,  
            filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list
            
sorted(list, f):
            它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,  
            返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。函数f可以定义为:
            def reversed_cmp(x, y):
                 if x > y:
                    return -1
                  if x < y:
                    return 1
                  return 0
-  匿名函数:
            map(lambda x: x* x, [1,2,3]) = [1, 4, 9].关键字表示匿名函数,冒号前面的x表示函数参数
  • 高阶函数:
-  Decorator(装饰器):  
            @log                          def log(f):  
            def f1(x):                          def fn(x) 
                return x* 2                          print "log detail" 
             print x                                 return f(x)
                                                return fn
  • 偏函数
    functools.partial可以帮助创建一个偏函数。可以实现把一个参数多的函数变成一个参数较少的函数,减少的参数需要在创建时  
    指定默认值,这样,新函数调用的难度就降低了。  
    import functools
    int2 = functools.partial(int, base = 2)
    int2('101') = 5

python每一个包中都必须有一个__init__.py文件

  • 面向对象编程:
class Person(object):
    psss
    
  按照Python编程习惯,类名与大写字母开头,进接着是object,表示该类是从哪个类继承下来的
实际应用中,我们需要自由的给一个实例绑定的各种属性。但现实社会中,一个类型的实例应该拥有相同的相同的名字的属性。  
在定义Person类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们  
就能在此为每个实例都统一加上以下属性:
class Person(object):
    def __init__(self, name, gender, birth):
        self.name = name
        self.gender = gender
        self.birth = birth
  • 类继承
class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

class Teacher(Person):

    def __init__(self, name, gender, course):
        //函数super(Teacher, self)将返回当前类继承的父类
        super(Teacher, self).__init__(name, gender)
        self.course = course

t = Teacher('Alice', 'Female', 'English')
print t.name
print t.course
class Person(object):

    def __init__(self, name, gender, **kw):
        self.name = name
        self.gender = gender
        for k, v in kw.iteritems():
            setattr(self, k, v)//设置对象属性

p = Person('Bob', 'Male', age=18, course='Python')
print p.age
print p.course

-- 特殊方法: 类似于Java中的toString()方法,可以进行重写。在Python中,这类方法包括:str()、repr()、cmp()

slots 是指一个类允许的属性列表:

class Student(object):
    __slots__ = ('name', 'gender', 'score')
    def __init__(self, name, gender, score):
        self.name = name
        self.gender = gender
        self.score = score

一个类实例可以变成一个可调用对象,只需要实现一个特殊方法__call__()

将Person类变成一个可调用对象:
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def __call__(self, friend):
        print 'my name is %s' % self.name
        pritn 'my friend is %s' % friend
        
>>>p = Person('bob', 23)
>>>p('Tim')
my name is bob
my friend is Tim