zoukankan      html  css  js  c++  java
  • python学习第二节 数据类型、字符编码、文件处理

    • 标准数据类型

          

          Python3 中有六个标准的数据类型:

              Number(数字)

              String(字符串)

              List(列表)

              Tuple(元组)

              Sets(集合)

              Dictionary(字典)

    • 数字

        

    #整型
    在Python 3里,只有一种整数类型 int,表示为长整型;
    内置的 type() 函数可以用来查询变量所指的对象类型。
    
    作用:年纪,等级,身份证号,qq号等整型数字相关
    
    
    >>> num=1
    >>> print(num,type(num))
    1 <class 'int'>
    
    #浮点型
      浮点型(Float)
    
    作用:薪资,身高,体重,体质参数等浮点数相关
    salary=3000.3 #本质salary=float(3000.3)

      

    •  字符串

    #作用:名字,性别,国籍,地址等描述信息
    
    #定义:在单引号双引号三引号内,由一串字符组成
    name='yinxin'
    
    #优先掌握的操作:
    #1、按索引取值(正向取+反向取) :只能取
      正向取值

        >>> name="yinxin"

        >>> name[0]

         'y'

      反向取值
       
    >>> name[-2]
       'i
    
    #2、切片(顾头不顾尾,步长)

        >>> name="yinxin"

         >>> name[:3]

          'yin'


    #3、长度len

        >>> name="yinxin"

        >>> len(name)

         

    
    #4、成员运算in和not in
    

        >>> "y" in name

        True

        >>> "y" not in name

        False

    #5、移除空白strip

       >>> name 'yinxin '

        >>> name.strip()

        'yinxin'


    #6、切分split

        >>> name_list="yinxin1,yixnin2,yixnin3"

        >>> name_list.split(",")

        ['yinxin1', 'yixnin2', 'yixnin3']


    #7、循环

        >>> name="yinxin"

        >>> for i in name:

        ...   print(i)

        ...

        y

        i

        n

        x

        i

        n

        字符串练习  

    # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
    name = " aleX"
    # 1)    移除 name 变量对应的值两边的空格,并输出处理结果
    # 2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果# 3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果# 4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
    # 5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
    # 6)    将 name 变量对应的值变大写,并输出结果# 7)    将 name 变量对应的值变小写,并输出结果# 8)    请输出 name 变量对应的值的第 2 个字符?
    # 9)    请输出 name 变量对应的值的前 3 个字符?
    # 10)    请输出 name 变量对应的值的后 2 个字符?# 11)    请输出 name 变量对应的值中 “e” 所在索引位置?# 12)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
    # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
    name = " aleX"
    # 1)    移除 name 变量对应的值两边的空格,并输出处理结果
    name = ' aleX'
    a=name.strip()
    print(a)
    
    # 2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果
    name=' aleX'
    if name.startswith(name):
        print(name)
    else:
        print('no')
    
    # 3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果
    name=' aleX'
    if name.endswith(name):
        print(name)
    else:
        print('no')
    
    # 4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
    name=' aleX'
    print(name.replace('l','p'))
    
    # 5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
    name=' aleX'
    print(name.split('l'))
    
    # 6)    将 name 变量对应的值变大写,并输出结果
    name=' aleX'
    print(name.upper())
    
    # 7)    将 name 变量对应的值变小写,并输出结果
    name=' aleX'
    print(name.lower())
    
    # 8)    请输出 name 变量对应的值的第 2 个字符?
    name=' aleX'
    print(name[1])
    
    # 9)    请输出 name 变量对应的值的前 3 个字符?
    name=' aleX'
    print(name[:3])
    
    # 10)    请输出 name 变量对应的值的后 2 个字符?
    name=' aleX'
    print(name[-2:])
    
    # 11)    请输出 name 变量对应的值中 “e” 所在索引位置?
    name=' aleX'
    print(name.index('e'))
    
    # 12)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
    name=' aleX'
    a=name[:-1]
    print(a)
    View Code
    • 列表 

    #作用:多个装备,多个爱好,多门课程,多个女朋友等
    
    #定义:[]内可以有多个任意类型的值,逗号分隔
    my_girl_friends=['yinxin','yinxin1','yinxin2',4,5] #本质my_girl_friends=list([...])
    或
    l=list('abc')
    
    #优先掌握的操作:
    #1、按索引存取值(正向存取+反向存取):即可存也可以取     

      正向取值
      
    >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
      >>> my_girl_friends[0]
      'yinxin'
      反向取值
      
    >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
      >>> my_girl_friends[-1]
      5
       
    #2、切片(顾头不顾尾,步长)
      
    >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
      >>> my_girl_friends[0:2]
    ['yinxin', 'yinxin1']
    
    #3、长度
     
    >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
      >>> len(my_girl_friends)
       5
    #4、成员运算in和not in

      >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]

      >>> "yinxin" in my_girl_friends

        True

      >>> "yinxin" not in my_girl_friends

        False


    #5、追加
    >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]
    >>> my_girl_friends.append("yinxin4")
    >>> my_girl_friends
    ['yinxin', 'yinxin1', 'yinxin2', 4, 5, 'yinxin4'] 

    
    #6、删除
    >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5] 
    >>> del my_girl_friends[0]
    >>> my_girl_friends
    ['yinxin1', 'yinxin2', 4, 5, 'yinxin4']

    #7、循环

     >>> my_girl_friends=['yinxin1','yinxin2',4,5]

      >>> for name in my_girl_friends:

      ...     print(name)

      ...

      yinxin1

      yinxin2

      4

      5

    #ps:反向步长

     正向步长

      >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]

      >>> my_girl_friends[0:3:1]

     ['yinxin', 'yinxin1', 'yinxin2']

      反向步长

      >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]

      >>> my_girl_friends[2::-1]

     ['yinxin2', 'yinxin1', 'yinxin'] 

      

    #列表翻转

      >>> my_girl_friends=['yinxin','yinxin1','yinxin2',4,5]

     >>> my_girl_friends[::-1]

     [5, 4, 'yinxin2', 'yinxin1', 'yinxin']

      插入   指定位置插入元素 

    name_list
    ['123', 'lilei', 'hanmeimei', 'test']
    name_list.insert(1,"1232")
    name_list
    ['123', '1232', 'lilei', 'hanmeimei', 'test']

    • 元组

    #作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
    
    #定义:与列表类型比,只不过[]换成()
    age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55))
    
    #优先掌握的操作:
    #1、按索引取值(正向取+反向取):只能取   
    #2、切片(顾头不顾尾,步长) #3、长度 #4、成员运算in和not in #5、循环


     >>> age=(11,22,33,44,55)

     >>> age[0]   #按照索引正向取值

      11

     >>> age[-1]   #按照索引反向取值

      55

     >>> age[0:2] #切片

     (11, 22)

     >>> len(age) #长度

     5

     >>> 11 in age #in

     True

     >>> 11 not in age #not in 

     False

     >>> for num in age:    #循环

     ...    print(num)

     ...

     11

     22

     33

     44

     55

    • 字典

    #作用:存多个值,key-value存取,取值速度快
    
    #定义:key必须是不可变类型,value可以是任意类型
    info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....})
    或
    info=dict(name='egon',age=18,sex='male')
    或
    info=dict([['name','egon'],('age',18)])
    或
    {}.fromkeys(('name','age','sex'),None)
    
    #优先掌握的操作:
    #1、按key存取值:可存可取
    >>> info={'name':'yinxin','age':18,'sex':'male'}
    >>> info['name']
    'yinxin'
    
    #2、长度len
    >>> info={'name':'yinxin','age':18,'sex':'male'}
    >>> len(info)
    3
    #3、成员运算in和not in
    >>> info={'name':'yinxin','age':18,'sex':'male'}
    >>> "name" in info
    True
    >>> "name" not in info
    False
    #4、删除
    1>
    >>> info={'name':'yinxin','age':18,'sex':'male'}
    >>> res=info.pop("name")
    >>> print(res)
    yinxin
    2>
    >>> info={'name':'yinxin','age':18,'sex':'male'}
    >>> del info["name"]
    >>> info
    {'sex': 'male', 'age': 18}
    #5、键keys(),值values(),键值对items()
    >>> info.keys()
    dict_keys(['sex', 'age'])
    >>> info.values()
    dict_values(['male', 18])
    >>> info.items()
    dict_items([('sex', 'male'), ('age', 18)])
    
    #6、循环
    >>> info={'name':'yinxin','age':18,'sex':'male'}
    >>> for k in info:
    ... print(k,info[k])
    ...
    name yinxin
    sex male
    age 18

    >>> info={'name':'yinxin','age':18,'sex':'male'}
    >>> for k,v in info.items():
    ... print(k,v)
    ...
    name yinxin
    sex male
    age 18
     

       练习

    1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
    
    即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
    a={'k1':[],'k2':[]}
    c=[11,22,33,44,55,66,77,88,99,90]
    for i in c:
        if i>66:
            a['k1'].append(i)
        else:
            a['k2'].append(i)
    print(a)
    2 统计s='hello a a say hello 1 1'中每个单词的个数
    
    结果如:{'say': 1, 'hello': 2, 'a': 2, '1': 2}
    s='hello a a say hello 1 1'
    l=s.split()
    dict={}
    for i in l:
        if i in dict:
            dict[i]+=1
        else:
            dict[i]=1
    print(dict)
    {'say': 1, 'hello': 2, 'a': 2, '1': 2}


    dic={}
    words=s.split()
    print(words)
    for word in words: #word='alex'
        dic[word]=s.count(word)
        print(dic)
    
    
    #利用setdefault解决重复赋值
    '''
    setdefault的功能
    1:key存在,则不赋值,key不存在则设置默认值
    2:key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值
    d={}
    print(d.setdefault('a',1)) #返回1
    
    d={'a':2222}
    print(d.setdefault('a',1)) #返回2222
    '''
    s='hello alex alex say hello sb sb'
    dic={}
    words=s.split()
    for word in words: #word='alex'
        dic.setdefault(word,s.count(word))
        print(dic)


    #利用集合,去掉重复,减少循环次数
    s='hello alex alex say hello sb sb'
    dic={}
    words=s.split()
    words_set=set(words)
    for word in words_set:
        dic[word]=s.count(word)
        print(dic)
    •  集合

    #作用:去重,关系运算,
    
    #定义:
                知识点回顾
                可变类型是不可hash类型
                不可变类型是可hash类型
    
    #定义集合:
                集合:可以包含多个元素,用逗号分割,
                集合的元素遵循三个原则:
                 1:每个元素必须是不可变类型(可hash,可作为字典的key)
                 2:没有重复的元素
                 3:无序
    
    注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
     
    
    #优先掌握的操作:
    #1、长度len
    #2、成员运算in和not in
    
    #3、|合集
    #4、&交集
    #5、-差集
    #6、^对称差集
    #7、==
    #8、父集:>,>= 
    #9、子集:<,<=    


    pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}

    linuxs={'wupeiqi','oldboy','gangdan'}

    print(pythons & linuxs
    {'wupeiqi', 'gangdan'}

    print(pythons | linuxs)
    {'wupeiqi', 'egon', 'biubiu', 'oldboy', 'alex', 'yuanhao', 'gangdan'}

    print(pythons -linuxs)
    {'alex', 'egon', 'yuanhao', 'biubiu'}

      print(pythons ^ linuxs)

     {'egon', 'yuanhao', 'biubiu', 'alex', 'oldboy'}

         字符编码

     http://www.cnblogs.com/linhaifeng/articles/5950339.html 

    •  文件处理

    http://www.cnblogs.com/linhaifeng/articles/5984922.html

  • 相关阅读:
    be accustomed to doing|actual |acute|adapt |
    By virtue of|sustain|post |scrape off |stretch|access to|take into account of|exploit|hasten|blur |idle|bored her to|account for|accused of|cruelty
    Block to|wreck|Range|Reach|span|chase around|amuse|exploit |instructed
    blast -m1
    qdel
    uname|mv|tar -xzvf|
    Hypothesis Tests for One Population Mean When σ Is Unknown|other
    dll显示调用和隐式调用
    使用预编译头提高编译速度
    NMS过程图示
  • 原文地址:https://www.cnblogs.com/yinxin/p/8033305.html
Copyright © 2011-2022 走看看