• Python—数据类型


     #### 数组和列表 list###

    数组:存储同一种数据类型的集合 scores = [12,13,14]

    列表:(打了激素的数组):可以存储任意数据类型的集合

    ctrl+Q 查看命令的使用方法

    1.列表的创建

       示例:

    name1 = 'bob'

    name2 = 'lily'

    name3 = ['ni','hao','wf']

    type(name3)

       list

           

    2.列表的特性:

       示例:

    service = ['http', 'ssh', 'ftp']                       

    # 索引                                                   

    print service[0]                                       

    print service[:]                                       

    print service[:-1]                                     

    # 切片                                                   

    print service[::-1]     

                

    # 重复                                                   

    print service * 3                                      

    # 连接                                                   

    service1 = ['firewalld', 'mysql']                      

    print service + service1  

                                      

    # 成员操作符                                                

    print 'firewalld' in service                           

    print 'firewalld' in service1                          

    # for循环遍历                                              

    for i in service:                                      

        print i,                                           

    for j in service[::-1]:                                

        print j                                            

                                                           

    # 列表里的嵌套列表                                             

    service2 = [['nihao',12],['wangfang',18],['hehe',20]]  

     #索引                                                   

    print service2[1]                                      

    print service2[0]                                      

    print service2[::-1]

     #切片                   

    print service2[1][0]   

    print service2[:-1][0]  

           

    3.列表的增加:

       示例:

    service = ['http', 'ssh', 'ftp']

    #1.直接在后面追加(只能追加列表类型的)

    print service + ['firewalld']

    #2.append:追加。追加一个元素到列表中,默认追加到最后

    service.append('firewalld')

    print service

    #3.extend:拉伸,追加多个元素到列表中

    service.extend(['my', 'name'])

    print service

    #4.insert:在指定位置插入元素

    service.insert(1, 'haha')

    print service

           

    4.列表的删除:

       示例:

    service = ['http', 'ssh', 'ftp']

    #1.如果pop()不传递值的时候,默认(显示)弹出最后一个元素

    print service.pop()

    #2pop()也可以传递索引值

    print service.pop(0)

    #3.remove:删除指定的元素

    service.remove('ssh')

    print service

    #4.del关键字 从内存中将整个信息都删除

    print service

    del service

    print service     

           

    5.列表的修改:

       示例:      

    service = ['http', 'ssh', 'ftp']

    #1.通过索引,重新赋值(给索引值为0的重新赋值为'haha')

    service[0] = 'haha'

    print service

    #2.通过切片,大范围的重新赋值

    service[:2] = ['nnn','mmm']

    print service

    print service[:2]         ##显示前两个   

           

    6.列表的查看:

       示例:

    service = ['http', 'ssh', 'ftp','ftp']

    #查看列表中的元素出现的次数

    print service.count('http')

    print service.count('ftp')

    #查看指定元素的索引值

    print service.index('http')

           

    7.列表的排序:

       示例:

    service = ['http', 'ssh', 'ftp','ftp']

    #1.按照ASCII码排序的

    service.sort()

    print service

    #2.默认的是按照升序排序的,更改默认值

    service.sort(reverse=True)

    print service

           

    service1 = ['Http', 'anny','ssh', 'ftp','Alice']

    #1.默认的排序是大写的ASCII码值小,小写的值大

    service1.sort()

    print service1

    #2.不区分大小写的排序

    service1.sort(key=str.lower)

    print service1

    service1 .sort(key=str.upper)

    print service1

    #给一个区间,然后排序,默认的是按顺序排列

    import random

    li = list(range(10))

    print li

    #将li这个数列打乱输出

    random.shuffle(li)

    print li

           

    8.练习题

    1)学生管理系统

    -系统里面有用户 用户有密码

       users = ['root', 'westos']

       passwd = ['123', '456']

    -用户登陆(判断用户登陆是否成功)

       1)判断用户是否存在

       2)如果存在:

          判断用户密码是否正确:先找出索引

          根据psswd【索引值】

          如果正确:登陆成功,退出循环

          如果错误:重新登陆(三次机会)

       3)不存在

       重新登陆(三次机会)

    代码:

    users = ['root', 'westos']

    passwd = ['123', '456']

    num = 1

    count = 0

    while num <= 3:

        user = raw_input('请输入用户名:')

        a = raw_input('请输入密码:')

        num += 1

        if user in users:

            ps = passwd[users.index(user)]

            if ps == a:

                print '登陆成功!'

                break

        else:

            count += 1

            print '请重新登陆,还剩余%d次机会!' %(3-count)

    else:

        print '三次机会已用完!'

           

    2)后台管理

    -后台管理员只有一个用户:admin 密码:admin

    -当管理员登陆成功后,才可以管理用户信息

    -管理用户信息包含

       添加用户信息

       删除用户信息

       查看用户信息

       退出

    代码:

    users = ['root', 'westos']

    passwd = ['123', '456']

    print '管理员登陆'.center(50, '*')

    name = raw_input('请输入用户名:')

    ps = raw_input('请输入密码:')

    if name == 'admin' and ps == 'admin':

        print '管理员登陆成功!'

        print '用户信息管理'.center(50, '*')

        while True:

            print """

            1.添加用户信息

            2.删除用户信息

            3.查看用户信息

            4.退出

            """

            choice = raw_input('请输入你的操作:')

            if choice == '1':

                print '添加用户信息'.center(50, '*')

                addname = raw_input('输入添加用户名:')

                if addname in users:

                    print '用户%s已经存在!' % addname

                else:

                    addps = raw_input('输入添加用户密码:')

                    users.append(addname)

                    passwd.append(addps)

                    print '添加用户%s成功!' % addname

            elif choice == '2':

                print '用户信息删除'.center(50, '*')

                print users

                deluser = raw_input('请输入想要删除的用户:')

                index = users.index(deluser)

                users.remove(deluser)

                passwd.pop(index)

                print '用户已删除'

            elif choice == '3':

                print '用户信息'.center(50, '*')

                print ' 用户名 密码'

                print ' %s %s' % (users,passwd)

            elif choice == '4':

                print 'Bye Bye!'

                exit

                break

            else:

                print '请输入正确的选择!'

    else:

        print '管理员登陆失败!'

           

          

          

    #### 元组 tuple ###

    1.元组的创建

    元组(tuple):带了紧箍咒的列表

       元组本身是不可变数据类型,没有增删改查(没有.append等功能)

       元组内可以存储任意数据类型

    示例:

    t = (1,2,3,4.0,'star')

    print t,type(t)

    #元组里面包含可变数据类型,可以间接修改元组的内容

    t1 = ([1,2,3],4)

    t1[0].append(4)

    print t1

           

    #元组如果只有一个元素的时候,后面一定要加逗号,否则数据类型不确定

    t1 = ('hello',)

    t2 = (1,)

    print type(t1),type(t2)

    2.元组的特性

    name = ('wf','nihao','fentiao')   

    #索引 切片                            

    print name[0]                     

    print name[:]                     

    print name[-1]                    

    print name[:-1]                   

    print name[1:]                    

    print name[::-1]       

          

    #重复                               

    print name * 3                    

    #连接                               

    print name + ('rourou','doubao')  

    #成员操作符                            

    print 'rourou' in name            

    print 'wf' in name                

                           

    3.元组的应用场景

    # 1.变量交换数值

    a = 1

    b = 2

    b, a = a, b

    # 相当于先把a,b封装成了一个元组(a,b)=(1,2)

    # 下面的交换数值,就想相当于

    # b = (1,2)[0]   a = (1,2)[1]

    print a, b

    #2.打印变量值

    name = 'westos'

    age = 10

    print 'name:%s,age:%d' % (name, age)

    ###相当于

    t = (name, age)

    print 'name:%s,age:%d' % t

    #3.元组的赋值:有多少元素,就用多少个变量

    t1 = ('westos', '18', 'student')

    name1,age1,work = t1

    print name1, age1, work

    scores = (100,99,88,98)

    scores1 = list(scores)

    scores1.sort()

    print scores1

    #相当于  (也可以倒叙排序,和上面的一样 reverse=True)

    scores = sorted(scores)       ##这个适用于所有数据类型

    print scores

           

    ### 集合 set ###

    1.集合(集合内的元素不能重复)

      不支持索引,切片,连接,重复;但是支持for循环操作和成员操作符

       示例:

    s = {1,2,3,1,2,3,4,5}

    print s,type(s)

    #如何定义一个空集合

    #(列表和元组直接不输入数值就可以定义一个空的)

    #但是集合不行

       比如:

    s = {}

    print s      ## 输出的s的类型是字典

    s1 = set([])

    print type(s1)

           

    #去掉列表当中的重复并输出

    s2 = [1,2,3,1,2,3,4,5]

    s3 = list(set(s2))

    print s3

    ###相当于  先把列表s2转换成集合类型(因为集合不能重复)再把结果转换成列表的形式输出

    print list(set(s2))

           

    2.增删

       示例:

    s = {6,7,8,1,2,3}

    #增加

    s.add(10)

    s.add(9)

    print s

    #增加多个元素

    s.update({4,5})

    print s

    #删除元素,用pop()默认删除和列表的默认删除不一样

    #列表是默认删除最后一个,集合是默认删除第一个

    s.pop()

    print s

    #删除指定的元素

    s.remove(8)

    print s

    3.交集,并集,差集

       示例:

    s1 = {1,2,3}

    s2 = {2,3,4}

    #并集

    print '并集:',s1.union(s2)

    print '并集:',s1 | s2

    #交集

    print '交集:',s1.intersection(s2)

    print '交集:',s1 & s2

          

    #差集

    #s1与s2相比,比s2多了什么  s1-s2

    print '差集:',s1.difference(s2)   #s1-(s1&s2)   结果:[1]

    #s2与s1相比,比s1多了什么  s2-s1

    print '差集:',s2.difference(s1)   #s2-(s1&s2)   结果:[4]

    #对等差分:并集-交集

    print '对等差分:',s1.symmetric_difference(s2)

    print '对等差分:',s1^s2       ##结果:[1,4]

           

    #s1是否为s2的子集

    print s1.issubset(s2)

    #两个集合是不是相交

    print s1.isdisjoint(s2)

    练习题:

    用计算机生成N个1~1000之间的随机整数,N是用户输入的,对于其中重复的数字,只保留一个,把其余的相同的数字去掉,不同的数对应着不同的学生的学号,数字从小到大排序,按照排好的顺序去找同学作调查,完成去重与排序的工作

           

    #### 字典 dict ###

    字典的定义:字典是一个无序的数据集合,使用print输出字典的时候,通常输出的顺序和定义的顺序不太一致

    message = {

       'name' : 'tom'

       'age' : '18'

       'height' : '1.80'

       'weight' : '75.5'

    }

    print message

    1.定义一个字典

    s = {}

    print type(s)      ##输出的结果是: dict  是一个空字典类型的

    d = dirct()

    print type(d)      ##输出的结果是: dict  是一个空字典类型的

           

    2.字典的特性

    #成员操作符(默认判断key值是否存在)

    d = dict(a=1,b=2)

    print 'a' in d     ## True

    print 1 in d       ## False

    #for循环(默认循环遍历字典的key值)

    for i in d:

       print i,        ##a b

    3.字典的增加

    d = dict(a=1,b=2)

    #增或更改key-value值

    d['g'] = 10

    d['a'] = 20

    print d            ##{'a':20,'b':2,'g':10}

       注意:如果key值存在的时候,更新value值;如果key值不存在,添加key-value值

    #增加多个key-value值

    d.update({'a':4,'f':1})

    print d

    d.setdefault('a':5)

    print d

       注意:setdefault 如果key值已经存在,不做修改;如果key值不存在,添加key-value值

    4.字典的删除

    d = dict(a=1,b=2,c=3)

    #pop():弹出指定的key-value值  括号内必须填key值,否则会报错

    d.pop('a')

    print d

    d.popitem()      ##这个是默认弹出第一对key-value值

    print d

    del d['a']       ##也可以执行删除a这对key-value值

    print d

    5.字典的修改与查看

    service = {              

        'http':80,           

        'mysql':3306         

    }                        

    #查看字典里面所有的key值

    print service.keys()        ##['http','mysql']

    #查看字典里所有的value值

    print service.values()      ##[80,3306]

    #查看字典里面所有的key-value值

    print service.items()       ##['http':80,'mysql':3306]

           

          

    #遍历

    for k,v in service.items():

       print k,'--->',v

    for k in service:      

        print k,service[k]

    if 'http' in service:

       print service['http']

    else:

       print 'key not exist!'

           

          

    get方法:获取指定的key对应的value值

       如果key值存在,返回对应的value值;

       如果key值不存杂,默认返回None。如果需要指定返回值,传值即可

    print service.get('https')

    print service.get('https','key not exist!')

    6.练习题:

    1)重复的单词:此处认为单词之间以空格为分隔符,并且不包含,和.

    -用户输入一句英文句子

    -打印出每个单词及其重复的次数

    -示例:

    -“hello java hello python”

    -hello 2

    -java 1

    -python 1

    c

          

    2)重复数字统计:

    -随机生成1000个整数

    -数字的范围[20,100]

    -升序输出所有不同的数字及其每个数字重复的次数

          

  • 相关阅读:
    07周总结
    06周总结
    05周总结
    04周总结
    03周总结
    02周总结
    python数据特征预处理
    LeetCode Hard: 23. Merge k Sorted Lists
    LeetCode Hard: 4. Median of Two Sorted Arrays
    LeetCode Medium: 49. Group Anagrams
  • 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/9595346.html
Copyright © 2020-2023  润新知