Python—数据类型

Posted wf-aiyouwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 \'\\t用户名\\t密码\'

            print \'\\t%s\\t%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]

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

      

 

以上是关于Python—数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Python基本数据类型

python数据类型都有哪些

python基础教程-数据类型详解

Python都有哪些常用的数据类型?

python 中怎么查看数据类型

Python数据类型-1 数据类型介绍