zoukankan      html  css  js  c++  java
  • python学习心得第二章

    python基础

    1.关于python编码的问题。

    python的编码现在主要是两种版本python2.7和python3.5

    python2.7默认的是ascii码进行编译,我们可以采用

    # -*- coding:utf-8 -*-
    a='你好'
    a_unicode=a.decode('utf-8')
    a_gbk=a_unicode.encode('gbk')
    print('a_gbk')
    

      

    的代码将2.7转化为用utf-8的方式进行编译,但是如果终端显示的只能是GBK的编码模式,还需要将utf-8转化为GBK。由代码可知,我们需要将utf-8转化为Unicode,然后将Unicode转化为gbk。

    注意:在转化的时候解码和编码的过程需要明确知道现在对应的gbk还是utf-8。

    图中为编码和解码的流程图

    python3.5为了帮助我们更好的编码进行了优化,因为python3.5采用的默认就是utf-8。并且我们不用再转化为Unicode了可以直接把utf-8转化为gbk。

    a='你好'
    a_gbk=a.encode('gbk')
    

    代码中直接将你好编译成了gbk模式,因为py3.5内部移除了Unicode的类型。

    注意:Windows为了方便大家在终端使用的时候方便,只要你输入的Unicode的代码,它就自动可以转化为gbk,所以在py2.7里面我们直接吧utf-8转化为Unicode以后便可以在终端输出了.

    2.python的运算符(py3.x版本)

    1:算数运算符

    加法运算:

    减法运算:

    乘法运算:

    除法运算:

    注意上面的3.0为浮点型即为小数点型。

    幂运算:

    **号后面的数为幂即为次方

    取余数的运算:

    取整数的除法,返回商的部分。

    不要小数点后面的部分

    2:比较运算符

    相等运算:

    由图由于a和b的值不是相同的,所以返回一个False相反,如果相等应该返回一个True

    不相等运算:

    大于运算:

    小于运算:

    大于等于运算:

    小于等于运算:

    3:赋值运算符:

    赋值运算:

    加法赋值运算:

    b+=a和b=b+a是同一个效果

    减法赋值运算:

    乘法赋值运算:

    除法赋值运算:

    取余数赋值:

    幂运算赋值:

    整除赋值运算:

    4:逻辑运算符

    and

    一个条件不满足就不成立

    or

    一个条件成立即满足条件

    5:成员运算符

    in

    如果a在b里面这返回True

    not in

    如果a不在b里面则返回True

    3.基本数据类型

    基本数据类型主要分为int 、bool、 字符串、字典、元组、列表。

    它们每一个都有自己的功能,并且在python里面我们统称为class(类),这些不同的类所创作的变量我们统称为了对象。

    1:bool值

         True或False

          1或0

    2:数字 

    int(整形)

    在32位的电脑上面,整数的位数是32,取值范围为-2**31~2**31-1.

    在64位的电脑上面,整数的位数是64,取值范围为-2**63~2**63-1.

    如果超出上面的取值范围,我们则会由int型转换为long型,到达long以后根据内存的大小决定取值范围,这是针对python2.2,py2.7和py3.x以后int就变成没有限制。根据内存的大小来决定范围的大小。

    int型的赋值:

    int的二进制赋值方法

    int的十进制赋值方法

    对于py2.x来说a和b的内存地址是不同的,但是python内部自己做了优化,减小内存的消耗,所以-5到257以内的数字都是用一个内存地址。

     超出-5到257以后就不共用一个内存地址。

    但是对于py2.7和py3.x数字的范围没有限制,都是一样的id

    class int(object)
        """
        int(x=0) -> integer
        int(x, base=10) -> integer
        
        Convert a number or string to an integer, or return 0 if no arguments
        are given.  If x is a number, return x.__int__().  For floating point
        numbers, this truncates towards zero.
        
        If x is not a number or if base is given, then x must be a string,
        bytes, or bytearray instance representing an integer literal in the
        given base.  The literal can be preceded by '+' or '-' and be surrounded
        by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.
        Base 0 means to interpret the base from the string as an integer literal.
        >>> int('0b100', base=0)
        4
        "
    

      

    int 里面的内部功能

    def bit_length(self): # real signature unknown; restored from __doc__
            """
            int.bit_length() -> int
            
            Number of bits necessary to represent self in binary.
            >>> bin(37)
            '0b100101'
            >>> (37).bit_length()
            6
            """
            return 0


    def __add__(self, *args, **kwargs): # real signature unknown
    """ Return self+value. """
    pass  

    bit.length():可以计算对象在二进制里面最少占几位

      

     __add__的功能:

    效果等同于print(a+b)

    3:字符串

    创建方式:

    字符串的类

    class str(object):
        """
        str(object='') -> str
        str(bytes_or_buffer[, encoding[, errors]]) -> str
        
        Create a new string object from the given object. If encoding or
        errors is specified, then the object must expose a data buffer
        that will be decoded using the given encoding and error handler.
        Otherwise, returns the result of object.__str__() (if defined)
        or repr(object).
        encoding defaults to sys.getdefaultencoding().
        errors defaults to 'strict'.
        """
    

    字符串常用功能:

    upper()和lower():将字符串字母变大小写

    capitalize:首字母变大写

      

    center:字符串居中以后填充增加物

    count:计算字符串的里面字符出现的次数,可以定义范围(第一个字符的位置为0)

    如果不定义范围,则全部字符参加计算

     i出现的次数总共为两次。

    endswith:判断字符串是否以某个字符结尾,可以定义范围

     如果不定义范围则是全部字符串查找

    expandtabs:默认将tab键变成8个空格,可以修改默认值

    代表Tab键

    find:寻址字符串里面字符的位置,如果没有找到返回-1,同样可以定义范围

    没有定义范围就是全程查找

     没有找到就返回-1

    format:字符串格式化:

    {0},{1}对应的format里面值得顺序

    index:找字符串里面字符的位置没有找到报错,其余功能与find相同

     

     isalnum:是否是数字和字母

     isalpha:是否是字母

     isdigit:是否是数字

     

     isupper,islower,istitle,isspace等都用相同的方法进行判断

    join:连接iterable的类型,可以设置连接方式

     注意iterable里面必须是字符串,不然会报错

    ljust和rjust与center用法相同,不同为一个左填充默认值,一个右填充默认值。

     lstrip和rstrip:移除左右的空格

     strip:默认情况移除所有的空格或者换行符,如果有参数strip('o'),移除前后的o

    partition:分割字符串,

     

     replace:从左到右替换字符串里面的字符,可以设定替换的个数

     

    split:分割字符串里面的字符,且返回一个列表,并且列表里面没有被分割的字符

    默认的是从左到右,可以用rsplit来从右到左进行分割

    splitlines:根据换行符进行分割

     startswith:判断是否以某个字符串进行开始 可以定义范围

     swapcase:大写变小,小写变大写

    title:变成标题

     

    索引:

    长度:

    切片:

    切片最后一位代表步长,就是范围确定以后按照一次读几个数进行输出

    循环:

     

    4:列表

    创建方式

    列表的类

    class list(object):
        """
        list() -> new empty list
        list(iterable) -> new list initialized from iterable's items
        """
    

     列表常用功能:

    索引:

    长度:

    切片:

    循环:

     append:追加

     count:计算列表里面元素的个数

     extend:批量的扩展元素到列表里面,只能添加iterable功能的

     index:找到元素所在列表的索引位置

     insert:根据索引位置添加元素

     pop:根据索引删除元素并且返回元素的值

     remove:移除某个元素

     reverse:翻转

    del(delete):删除指定索引位置

    5:元组

        元组和列表几乎是一样的,唯一的差距就是元组的元素无法修改

    创建方式:

     

    元组的类

    class tuple(object):
        """
        tuple() -> empty tuple
        tuple(iterable) -> tuple initialized from iterable's items
        
        If the argument is a tuple, the return value is the same object.
        """
    

    元组的常用功能

    索引:

    切片:

    循环:

     长度:

     count:计算元素的个数

     index:查找索引位置

     注意查找是从左到右

     6:字典

          字典对于的是两个值key:value

    创建方式:

     字典的类

    class dict(object):
        """
        dict() -> new empty dictionary
        dict(mapping) -> new dictionary initialized from a mapping object's
            (key, value) pairs
        dict(iterable) -> new dictionary initialized as if via:
            d = {}
            for k, v in iterable:
                d[k] = v
        dict(**kwargs) -> new dictionary initialized with the name=value pairs
            in the keyword argument list.  For example:  dict(one=1, two=2)
        """
    

    字典的常用功能:

    索引:

     索引值是key,如果key不存在,报错

    循环:

     默认循环的是key

    字典单独输出key、value、item

     clear:全部清除

     get:根据key获取value,如果key不存在返回默认值none,默认值可以修改

     in 检查key是否在字典里面:

    popitem:从左到右去拿item

    pop:指定key去拿对应的value

    update:更新字典,批量增加

    del(delete):删除键值对

    4.特殊功能用法

    enumerate:为循环增加默认的索引

     

    rang:提供一段范围的函数

    注意rang()函数有步长的概念,并且步长默认为1

    步长可以为负数 即反方向

    步长的概念和切片中同样适用

    本章总结

    1:本章中学到赋值运算,数据类型,数据类型的各种功能,enumerate,rang ,for的用法。

    2:__init__是类里面重要且固定的方法

    3:py3.5里面读字符串是一个字符一个字符去读,py2.7里面读字符串是一个字节一个字节的读,

        并且py3.5里面字节和字符可以相互转换

    4:字节在循环的时候只能返回十进制

    5:十进制和二进制之间的转换,通过bin(十进制)

     

    6:字节和字符串相互转换

    字符串转换为字节

    字节转换为字符串

    注意转换过程中字节和字符串之间的编码方式必须一致

    7:索引取那个元素就是元素本身,切片取元素或一群元素,就是原来切片的类型,例如字符串切片返回字符串,列表切片返回列表

    8:列表的嵌套

    9:元组不能被修改,指的是元组的元素,但元组的元素内部可以修改,相当于第一层不能改

    10:字典的修改方式除了用update还可以用直接dic['k1']=123

    如果原来没有key就增加,如果有就更新原来的key

    11:一般对于字符串操作都是会产生新的,其余的都不会。如果不是就反过来。

    12:fromkeys的用法

    注意所有要改变和增加的key都要用()或者【】包含起来。

    13:如果要用数字表示key,数字不能相同,字符串不能相同。如果相同会随机抹去一个相同的键值对

    14:如果用fromkeys和{}直接创建字典没有什么区别,唯一的不同就是{}里面的keys是独立改变但是fromkeys里面的keys是一起改变

    15:python里面的方法,分为类方法和静态方法,类方法只能用类名调用,静态方法可以用类名和对象调用。

    16:在字符串里面空格也占一个字符

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    数据仓库中的几种数据模型
    数据仓库为什么要分层
    数据仓库的两种建模方法
    数据仓库之架构发展
    数据仓库是什么
    ETL 自动化测试框架
    大数据测试之ETL测试工具和面试常见的问题及答案
    Hadoop面试链接
    Hadoop 面试总结
    Spark 基本架构及原理
  • 原文地址:https://www.cnblogs.com/lyx958700392/p/5511763.html
Copyright © 2011-2022 走看看