• Python之路-python基础二


    本章内容:

         一.编码格式

         二.常用数据类型

         三.字符串常用方法

         四.列表常用方法

       五.数据运算

         六.课后作业

    编码格式:

          ASCII

           ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。由于ascii码能表示符合的数量太少,无法表示完全部中午。为了处理汉字,程序员在ASCII上设置了中文的扩展表。发展如下:

           GB2312(1980年):一共收录了7445个字符,包括6763个汉字和682个其它符号。

           GBK1.0(1995年):收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。(windows 简体中文默认使用GBK编码表)

           GB18030(2000年):正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。

         使用ASCII码表,英文占用一个字节的空间大小,中文占用两个字节的空间大小。

         Unicode

         由于ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

         Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它经历了了以下三个阶段的发展:

          utf-32:(全部文字都占用了四个字节

          utf-16:全部文字占用了两个字节

          utf-8(可变长编码):不再像之前的utf-32,utf-16占用固定的字节,而是根据使用不同的语言来决定占用的空间大小。英文占用1个字节,中文占用三个字节。

    常用数据格式

         常用数据格式如下:

       1.数字类型

             整型(int),长整型(long,python3中不区分整型和长整型),浮点型(float),复数(complex),

           2.布尔型(bool)   

             真(True)或者假(False),0或者1

          3.字符串

                  "hello world"

          万恶的字符串拼接:
             python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。(使用join函数解决该问题)
       
           字符串常用方法:
            1)移除空白:strip()  ,默认移除空格,tab和换行符,也可以再括号里指定移除的内容,如移动 ,strip(' ')
            2)分割:slipt(),括号内可以指定分割符
            3)长度:len(),例如:a='test',len(a)显示a的长度
            4)索引:index(),例如,a='test',a.index('e')
            5)切片:
    >>> a='test'
    >>> a[1:3]   #正向顺序切片
    'es'
    >>> a[-2:]   #反向顺序切片
    'st'
    >>> a[0::2]  #2为步长,从第一个开始,隔一个取值
    'ts'
       
          4.列表(list)
          列表常用方法:
          1)索引:index
    >>> a=[1,2,3,4,5,6,'test','test1']
    >>> a.index(2)
    1
    >>> a.index('test')
    6
        2)切片:
    >>> a=[1,2,3,4,5,6,'test','test1']
    >>> a[1:3]   #正向切片,包头不包尾,只切到索引到2的值
    [2, 3]
    >>> a[-3:]    #逆向企鹅哦 
    [6, 'test', 'test1']
    >>> a[0::3]   #跳跃切片
    [1, 4, 'test'] 
          3)追加:append(),会追到到最后
    >>> a=[1,2,3,4,5,6,'test','test1']
    >>> a.append('test2')
    >>> a
    [1, 2, 3, 4, 5, 6, 'test', 'test1', 'test2']
      4)删除:pop,remove
    #pop()括号内填索引号,如果为空,默认为删除最后一个
    >>> a [1, 2, 3, 4, 5, 6, 'test', 'test1', 'test2'] >>> a.pop() 'test2' >>> a.pop(2) 3
    #remove()指定删除的列表内容
    >>> a [1, 2, 4, 5, 6, 'test', 'test1'] >>> a.remove('test') >>> a [1, 2, 4, 5, 6, 'test1']
      5)长度:len()
    >>> a
    [1, 2, 4, 5, 6, 'test1']
    >>> len(a)
    6
       6)插入:insert()   
    >>> a
    [1, 2, 4, 5, 6, 'test1']
    >>> a.insert(2,'two')  #括号内先写插入位置的索引值,后面写要插入的内容
    >>> a
    [1, 2, 'two', 4, 5, 6, 'test1']
         7)循环
        for i in list:
          print i
         8)包含
       9)list.copy 。我们用下面代码来进行说明列表的copy方法。列表内存的是每个值的内存地址,na2 copy test列表所存储的所有数值对应的内存地址。查看na2和test的内存位置,可以发现他们所指向的内存地址不是同一个。
    test=['a','b','c',['d','e']]
    na2=test.copy()
    print('test:',id(test))
    print('na2:',id(na2))
    
    结果:
    test: 40552136
    na2: 40550472

       这时候test[1]发生改变了,所以test列表中存贮的数值对应的内存值也发生了改变,故test列表发生了改变,但是na2跟test的内存的独立的,故na2的值并不会发生改变。但是这时候如果内嵌的列表发生改变了,test,na2也同时发生改变。这是因为test,na2存储的指向内嵌列表的内存值,这时候内嵌列表的存储内容发生改变了,该test,na2读取到的内嵌列表的内容也同时发生了改变、

    test=['a','b','c',['d','e']
    na2=test.copy()
    print('na2:',na2)
    test[1]='new'
    print('test:',test)
    print('na2:',na2)
    test[3][1]='list_new'
    print('test:',test)
    print('na2:',na2)

    打印结果如下:

    na2: ['a', 'b', 'c', ['d', 'e']]
    test: ['a', 'new', 'c', ['d', 'e']]
    na2: ['a', 'b', 'c', ['d', 'e']]
    test: ['a', 'new', 'c', ['d', 'list_new']]
    na2: ['a', 'b', 'c', ['d', 'list_new']]
          5.元组(tunple)
        和列表一样,但它是只读列表,方法只有index和count。定义元组,通常是为了明确的表达 元组内的数据是常量,不要去改变它。
     
          6.字典(dict):由key:value组成,字典是无序的(无序通过索引值查找value,节省了空间),且key值必须唯一。  
        增:
          dict[key]=value;#key若不存在,则新增该键值对,如果key已存在,则会进行修改
          dict.fromkeys() #创建字典,并且给key赋予默认值,如果没有,则为None
    name={}
    name=name.fromkeys(['a','b'])
    print(name)
    name=name.fromkeys(['a','b'],'test')
    print(name)
    
    结果:
    {'a': None, 'b': None}
    {'a': 'test', 'b': 'test'}      
        删:
          dict.pop(key,return)   #使用该命令删除key值,如果key不存在,则返回设置的return值。如果不设置该值,则key不存在时会报错。
          dict.popitem()    #随机删除一个键值对
          del dict[key]
        改:
           dict[key]=value; #直接重新赋值给key来修改.
           dict.setdefault(key,value)#Value默认为None。如果设置的key值也存在,则返回对应的值,如果不存在,则会返回设置的value值,并将该键值对添加进字典里 
             dict.update(dict_1) :update会合并dict_1的内容,如果合并的key值已存在,则value值更新,如果不存在 ,则新增进去。要注意的是,改变的只是dict,dict1内容并未改变。
    na2={1:'a',2:'b'}
    na3={1:'f',3:'d'}
    na2.update(na3)
    print(na2)
    print(na3)
    
    打印结果:
    {1: 'f', 2: 'b', 3: 'd'}
    {1: 'f', 3: 'd'}  
        查:
          dict_name  #直接输入字典名,查看字典所有内容
          dict[key]   #查看字典中key所对应的value值
          dict.get[key]  #功能与dict[key]一样,需要注意的是,使用dict[key]查询时,当key不存在则会报错,而dict.get[key]则会返回None.
          key in dict  #判断key是否在dict中,在则返回True,不包含则返回False
          dict.keys()  #查看字典的所以key值
          dict.values() #查看字典所有的value值
          7.集合(set)
         集合的特点是:天然去重,无序的。集合的作用可以用来做关系测试(交集,并集,差集,对称差集 ),定义两个集合如下:
    set1={'this','is','test'}
    set2={'this','is','different'}

        可以使用intersection方法或者&来表示交集,交集即是两个集合重复的内容。

    print(set1.intersection(set2))
    print(set1&set2)
    结果:
    {'is', 'this'}
    {'is', 'this'}

        并集,即是两个集合合并起来的内容,可以使用union方法或者‘ | ’ 来表示

    print(set1.union(set2))
    print(set1|set2)
    结果:
    {'different', 'is', 'test', 'this'}
    {'different', 'is', 'test', 'this'}

        差集,即set1和set2对比,不同的部分。test1和test2比较,只会显示set1有的,而set2没有的内容。set2而set1没有的并不会显示。用difference或者 ‘ -’来表示

    print(set1.difference(set2))
    print(set1-set2)
    
    结果:
    {'test'}
    {'test'}

        对称差集,将set1和set2都不同的元素都显示出来 。用 symmetric_difference 或者 ‘ ^’ 来表示

    print(set1.symmetric_difference(set2))
    print(set1^set2)
    结果:
    {'different', 'test'}
    {'different', 'test'}
    数据运算
        参考:http://www.runoob.com/python/python-operators.html
     
    课后作业
          1.跳出三层循环
    #跳出三层循环
    loop_1=False #设置一层循环结束标志,如果为真则结束一层循环
    loop_2=False #设置两层循环结束标志,如果为真则结束第二层循环
    for i in range(10):
        if loop_1:
            break
        print("'i'-----------",i)
        if i>5:
            for j in range(5):
                if loop_2:
                    loop_1=True
                    break
                print("'j'----------",j)
                for k in range(3):
                    if k>1: 
                         loop_2=True    
                         break
                    print("'k'------", k)
    else:
        print('正常结束循环')
       
  • 相关阅读:
    还贷的那些事V——等增幅还贷的计算
    计算机中的颜色X——两颜色的偏转值
    高亮显示不区分大小写的关键字——ASP
    一道算法题,看看大家的思路
    一道算法题,看看大家的思路(续)
    IQCar的实现II——解题思路
    IQCar的实现I——IQCar的介绍
    Flex画流程图
    jQuery源码研究01
    javascript笔记:javascript里面不同function定义的区别
  • 原文地址:https://www.cnblogs.com/white-small/p/6785370.html
Copyright © 2020-2023  润新知