python3面向对象

大数据常用的三个函数:

  foo = [12,1,20,30,15,85,100,25]

 map函数,返回map对象,每一个元素做运算

   #每个元素的倍数

   mapFunction = map(lambda x : x*2,foo)
   for i in mapFunction:
      print(i,end=" ")

 filter 过滤掉不满足条件的结果,并把相同结果组成一个新的对象 filter

  #过滤掉不能被三整除的数

    filterFuntion = filter(lambda x : x % 3 ==0,foo)
        print(type(filterFuntion))
        for i in filterFuntion:
            print(i,end=" ")

 reduces 统计数据,返回结果,不过在使用前,需要导入模块

    #求和

    from functools import reduce
    sum  = reduce(lambda x,y:x+y,foo);
    print(sum)

 python中自定义排序函数:
Python内置的 sorted()函数可对list进行排序:


>>>sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。


因此,如果我们要实现倒序排序,只需要编写一个reversed_cmp函数:


def reversed_cmp(x, y):
 if x > y:
 return -1
 if x < y:
 return 1
 return 0
这样,调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序:


>>> sorted([36, 5, 12, 9, 21], reversed_cmp)


[36, 21, 12, 9, 5]
sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:


>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']
'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小。
.sort()排序方法
shus.sort()对原有列表进行排序,改变原来列表的顺序,无返回值
print(shus)就是改变后的列表
sorted()排序函数
排序时不影响原数据,产生新的排序数据
print(sorted(shus))排序后的结果
print(shus)还是原结果


练习:
对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。


输入:['bob', 'about', 'Zoo', 'Credit']


>>> a = ['bob', 'about', 'Zoo', 'Credit']
>>> print(sorted(a, key=str.lower))


结果:
['about', 'bob', 'Credit', 'Zoo']


简介:

1. 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法,

         对象是类的实例。

2.方法: 类中定义的函数

3.类变量: 类变量在整个实例化的对象中是公有的,类变量定义在类中且在方法体外。

4.数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。

5.方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫做方法覆盖

6.实例变量:定义在方法中的变量,只作用于当前实例的类.

7.继承: 即一个派生类继承基类的字段和方法,继承也允许把一个派生类的对象作为一个基类对待。

8.实例化 :创建一个类的实例,类的具体对象。

9.对象 :  通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法。

python支持多继承。

类的初始函数可以定义为,一个名为__init__()的特殊函数(构造方法)

class MyClass:     

      def __init__(self,name):

               self.nam=name

实例化类的时候,就需要 给这个类加上相对应的参数 例如:  x = MyClass("我的名字")

self代表类的实例,而非类。类的方法和普通的函数只有一个特别的区别--方法必须有一个额外的参数名称。

类的方法:

     在类的内部,使用def关键子来定义一个方法,方法参数必须要加上self,且作为第一个参数。

在类中也可以定义私有属性和私有方法 例如:

       class Person:

                #定义一个私有属性,私有属性在类的外部无法直接进行访问

                __name="张三"

                 #定义私有方法

                  def __methon(self):

                         print("我是私有方法,只能在本类中使用哟")

继承:

       定义如下

           class FacterClass(object):

                     print("所有的类默认都是继承object的")

           class paishenglei(FacterClass):

                     print("我是派生类,我继承了这个类")

      需要注意圆括号中基类的顺序,若是基类和派生类有相同的方法名,默认调用派生类的。

多继承

       python跟别的语言有所不同就是python可以多继承,格式如下:

         class DuoJiCheng(派生类1,派生类1,派生类1....):

                     具体操作

类的专有方法:

          __init__:构造方法,在生成对象是调用

          __del__:自动销毁方法,当对象没有引用的时候,或者程序结束的时候,程序会自动调用__del__方法

                      使用就是  del  引用名称

          __str__():   #相当于java中的toString,用来测试类的

                  return xxxx;        

            可以测试一个对象有多少个引用:
             import sys
             t=T()

             sys.getrefcount(t)返回2



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值