本文目录:

一、元组类型

二、字典类型

三、集合

一、元组类型

什么是元祖

元组: 元组就是一个不可变的列表

用途: 用于存放多个值,当存放的多个值只有读的需求没有改的需求时用元组最合适

定义方式:在()内用逗号分隔开多个任意类型的值
  1. t=(1,3.1,'aaa',(1,2,3),['a','b']) # t=tuple(...)
  2. # print(type(t))
  3. # res=tuple('hello')
  4. # res=tuple({'x':1,'y':2})
  5. # print(res)

常用操作+内置的方法

1、按索引取值(正向取+反向取):只能取

  1. # t=('a','b',1)
  2. # t[0]=111

2、切片(顾头不顾尾,步长)

  1. # t=('h','e','l','l','o')
  2. # res=t[1:3]
  3. # print(res)
  4. # print(t)

3、长度

  1. # t=('h','e','l','l','o')
  2. # print(len(t))

4、成员运算in和not in

  1. # t=('h','e','l','l','o')
  2. # print('h' in t)

5、循环

  1. # t=('h','e','l','l','o')
  2. # for item in t:
  3. # print(item)

总结

# ======================================该类型总结====================================
# 存多个值
# 有序
# 不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
t=(1,'a',['x','y','z'])
# print(id(t[2]))
# print(id(t))
t[2][0]='X'
# print(t)
# print(id(t))
# print(id(t[2]))
# list1=['a','b','c']
# print(id(list1[0]))
# print(id(list1[1]))
# print(id(list1[2]))
#
# print('='*50)
# list1[1]='B'
# print(id(list1[0]))
# print(id(list1[1]))
# print(id(list1[2]))
# 掌握的方法
t=('a','b','a')
# print(t.index('a'))
# t.index('xxx')
print(t.count('a'))

二、字典类型

什么是字典

类似于java编程语言中的Map

用途: 用来存方多个(不同种类的)值

定义方式: 在{}内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来描述value的,所以key通常是字符串类型,但其实key必须是不可变的类型(int\float\str\tuple)

  1. d={0:'x',1.3:'y','k1':'z',(1,2,3):'aaa'} # d=dict(....)
  2. # print(d[(1, 2, 3)])
  3. # d1={[1,2,3]:'aaaaa'}
  4.  
  5. # d=dict([('k1',1),('k2',2),('k3',3)])
  6. # print(d)
  7.  
  8. # l=[('k1',1),('k2',2),('k3',3)]
  9. # d={}
  10. # for t in l: #t=('k1',1)
  11. # k,v=t
  12. # # print(k,v)
  13. # d[k]=v
  14. # print(d)
  15. # #
  16. # d=dict(l)
  17. # print(d)
  18.  
  19. # d=dict(x=1,y=2,z=3)
  20. # print(d)

常用操作+内置的方法

1、按key存取值:可存可取

  1. d={'x':1}
  2. print(d['x'])
  3. print(id(d))
  4. d['x']=1111
  5. print(d)
  6. print(id(d))
  7. d['y']=2222
  8. print(d)

2、长度len

  1. d={'x':1,'y':2,'z':3}
  2. print(len(d))

3、成员运算in和not in

  1. d={'x':1,'y':2,'z':3}
  2. print(1 in d)
  3. print('x' in d)
    # 一般判断这个元素是否存在于字典的key中

4、删除

  1. d={'x':1,'y':2,'z':3}
  2. # del d['y']
  3. # print(d)
  4.  
  5. # res=d.pop('y')
  6. # print(d)
  7. # print(res)
  8.  
  9. # res=d.popitem() #取出字典最后一个key,val并返回个元祖
  10. # print(res)

5、键keys(),值values(),键值对items()

  1. d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
  2. print(d.keys())
  3. # print(list(d.keys()))
  4.  
  5. print(d.values())
  6. # print(list(d.values()))
  7.  
  8. print(d.items())
  9. # print(list(d.items()))

6、循环

  1. # for k in d.keys():
  2. # print(k)
  3. # for k in d:
  4. # print(k)
  5.  
  6. # for v in d.values():
  7. # print(v)
  8.  
  9. for k,v in d.items(): #k,v=('name', 'egon')
  10. print(k,v)

总结

  1. # ======================================该类型总结====================================
  2. # r存多个值
  3.  
  4. # 无序
  5.  
  6. # 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash
  7.  
  8. # 需要掌握的操作
  9. # get方法
  10. # d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
  11. # v=d.get('namexxxxxxx')
  12. # print(v)
  13.  
  14. # v1=d['namexxxxxxxxxxx']
  15. # print(v1)
  16.  
  17. #update方法
  18. # d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
  19. # d.update({'x':1,'name':"EGON"})
  20. # print(d)
  21.  
  22. # fromkeys:需求是快速新造出一个字典,value的初始值全都为None,而key是来自于一个列表
  23. # keys=['name','age','sex']
  24. # # d={}
  25. # # for k in keys:
  26. # # d[k]=None
  27. #
  28. # d={}.fromkeys(keys,None)
  29. # print(d)
  30.  
  31. # setdefault
  32. d={"x":1,"y":2}
  33.  
  34. # 按照默认的操作形式
  35. # d['x']=1111 # key存在则修改
  36. # d['z']=1111 #key不存在则新增
  37.  
  38. # 按照setdefault的形式
  39. # d={"x":1,"y":2}
  40. # res=d.setdefault('x',11111) # 在key存在的情况下不修改值,会返回原值
  41. # print(d)
  42. # print(res)
  43.  
  44. # res=d.setdefault('z',11111) # 在key不存在的情况下会新增值,会返回新增的值
  45. # print(d)
  46. # print(res)
  47.  
  48. # 练习
  49. s='hello alex alex say hello sb sb'
  50.  
  51. # d={'hello':2,'alex':2,'say':1,'sb':2}
  52.  
  53. d={}
  54. words=s.split()
  55. # print(words) #words=['hello', 'alex', 'alex', 'say', 'hello', 'sb', 'sb']
  56. for word in words: #word= 'alex'
  57. # d[word]=words.count(word) #d['alex']=words.count('alex')
  58. d.setdefault(word,words.count(word))
  59. #d={'hello':2,'alex':2}
  60.  
  61. # print(d)
  62.  
  63. #补充元组符号
  64. # t=(1,)
  65. # print(t,type(t))
  66.  
  67. name=input('>>: ').strip()
  68. print(('my name is %s' %name).center(50,'*'))

三、集合

什么是集合 

  1. pythons=['egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯']
  2. linuxs=['欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb']
  3. l=[]
  4.  
  5. for stu in pythons:
  6. if stu in linuxs:
  7. l.append(stu)
  8. print(l)

上面是找出即在python学员名单又在linux学员名单中的学员,有没有更好更简单的方法呢?

有的,就是集合

什么是集合?
在{}内用逗号分隔开多个值,集合的特点:
            1. 每个值必须是不可变类型
            2. 集合无序
            3. 集合内元素不能重复

为何要用集合
    1. 用于做关系运算
    2. 去重

  

3. 如何用集合

  1. # s={1,1.3,'aa',[1,2,]}
  2. # s={1,1.3,'aa'}
  3. # print(s)
  4. # s={1,1,1,1,1,1,1,2} #s=set(....)
  5. # print(type(s))
  6. # print(s)
  7. # d={'x':1,'x':2,'x':3}
  8. # print(d)
  9. # res=set('hello')
  10. # res=set([1,2,['a','b']])
  11. # print(res)

集合的第一大用途: 关系运算

  1. pythons={'egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯'}
  2. linuxs={'欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb'}
  3. # 1 求同时报名两门课程的学生姓名:交集
  4. # print(pythons & linuxs)
  5. # print(pythons.intersection(linuxs))
  6. # pythons=pythons & linuxs
  7. # print(pythons) #{'李铜蛋', '艾里克斯'}
  8. # pythons.intersection_update(linuxs) #pythons=pythons.intersection(linuxs)
  9. # print(pythons) #{'艾里克斯', '李铜蛋'}
  10. # 2 求报名老男孩学校课程的所有学生姓名:并集
  11. # print(pythons | linuxs)
  12. # print(pythons.union(linuxs))
  13. # 3 求只报名python课程的学生姓名: 差集
  14. # print(pythons - linuxs)
  15. # print(pythons.difference(linuxs))
  16. # print(linuxs - pythons) #求只报名linux课程的学生姓名
  17. # print(linuxs.difference(pythons))
  18. # 4 求没有同时报名两门课程的学生姓名: 对称差集
  19. # print((pythons - linuxs) | (linuxs - pythons))
  20. # print(pythons ^ linuxs)
  21. # print(pythons.symmetric_difference(linuxs))
  22. # 5 父子集:指的是一种包含与被包含的关系
  23. # s1={1,2,3}
  24. # s2={1,2}
  25. # print(s1 >= s2)
  26. # print(s1.issuperset(s2))
  27. # print(s2.issubset(s1))
  28.  
  29. # 情况一:
  30. # print(s1 > s2) #>号代表s1是包含s2的,称之为s1为s2的父集
  31. # print(s2 < s1)
  32. # 情况二:
  33. # s1={1,2,3}
  34. # s2={1,2,3}
  35. # print(s1 == s2) #s1如果等于s2,也可以称为s1是s2的父集合
  36. # 综上:
  37. # s1 >= s2 就可以称为s1是s2的父集
  38.  
  39. # s3={1,2,3}
  40. # s4={3,2,1}
  41. # print(s3 == s4)
  42. # s5={1,2,3}
  43. # s6={1,2,3}
  44. # print(s5 >= s6)
  45. # print(s6 >= s5)

集合的第二大用途:去重

 
 
# 集合去重的局限性:
# 1. 会打乱原值的顺序
# 2. 只能针对不可变的值去重
# stus=['egon','lxx','lxx','alex','alex','yxx']
# new_l=list(set(stus))
# print(new_l)
#
# old_l=[1,[1,2],[1,2]]
# set(old_l)
l=[
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'egon','age':20,'sex':'female'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
]
# new_l=[]
# for dic in l:
#     if dic not in new_l:
#         new_l.append(dic)
# print(new_l)
# 需要掌握的操作:
s1={1,2,3}
# s1.update({3,4,5})
# print(s1)
# print(s1.pop())
# print(s1)
# s1.remove(2)
# print(s1)
# s1={1,2,3}
# print(id(s1))
# s1.add(4)
# print(s1)
# print(id(s1))
# s1={1,2,3}
# s1.discard(4)
# s1.remove(4)
# print(s1)
# s1={1,2,3}
# s2={4,5}
# print(s1.isdisjoint(s2))
#总结
# 存多个值
# 无序
# set可变
  1.  

           

         

            

python基础:数据类型二的更多相关文章

  1. python基础----数据类型二

    数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...

  2. Day 3 Python 基础数据类型二

    1. INT 型 #1. 数字int #bit_length() 当十进制用二进制表示时,最少使用的位数. v =11 data = v.bit_length() print(data) 2. 布尔值 ...

  3. Python基础数据类型-列表(list)和元组(tuple)和集合(set)

    Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...

  4. Python基础数据类型-字符串(string)

    Python基础数据类型-字符串(string) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版 ...

  5. python基础数据类型考试题

    Python基础数据类型考试题 考试时间:两个半小时                      满分100分(80分以上包含80分及格) 一,基础题. 1,简述变量命名规范(3分) 2,字节和位的关系 ...

  6. 1--Python 入门--Python基础数据类型

    一.Python基础语法 初次使用Python,首先要明确三点: Python的标识符(例如变量名.函数名等),可用字母.数字和下划线构成,不能以数字开头,且区分大小写. Python对于缩进敏感.在 ...

  7. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  8. Python基础数据类型题

    Python基础数据类型 题考试时间:三个小时 满分100分(80分以上包含80分及格)1,简述变量命名规范(3分) 1.必须是字母,数字,下划线的任意组合. 2.不能是数字开头 3.不能是pytho ...

  9. Python基础数据类型之字符串

    Python基础数据类型之字符串 一.Python如何创建字符串 在python中用引号将一些文本包起来就构成了字符串(引号可以是单引号.双引号.单三引号,双三引号,它们是完全相同的) >> ...

  10. Python基础数据类型之集合

    Python基础数据类型之集合 集合(set)是Python基本数据类型之一,它具有天生的去重能力,即集合中的元素不能重复.集合也是无序的,且集合中的元素必须是不可变类型. 一.如何创建一个集合 #1 ...

随机推荐

  1. 【leetcode_easy】557. Reverse Words in a String III

    problem 557. Reverse Words in a String III solution1:字符流处理类istringstream. class Solution { public: s ...

  2. iOS-ShareSDK的使用(转)

    官方下载ShareSDK iOS:http://sharesdk.cn/ ShareSDK社会化分享 包含“社会化分享组件”“社会化登录组件”“第三方评论和赞”三大模块,并有详尽的数据统计后台,助力移 ...

  3. 部署 --- Nginx

    Nginx介绍 简介: Nginx是由伊戈尔.塞索耶夫开发的,在04年10月开源的一款高性能HTTP和反向代理服务器. 因为它的稳定性好,功能丰富,有示例配置文件和较低的系统资源消耗而闻名 同时也是一 ...

  4. 【算法】矩阵填数,深度优先搜索(DFS),Pascal改C语言

    面向对象的上机实验 题目 以下列方式向 5*5 矩阵中填入数字.设数字i(1=<i<=25),则数字i+1 的坐标位置应为(E, W).(E, W)可根据下列关系由(x,y)算出: 1)( ...

  5. 最新 搜狐java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.搜狐等10家互联网公司的校招Offer,因为某些自身原因最终选择了搜狐.6.7月主要是做系统复习.项目复盘.LeetCode ...

  6. 解决element-ui按需引入不了Scrollbar的问题

    一.报错原因 在我想按需引入element-ui时,突然报错: 这个报错来的有点措不及防.明明在页面当中能够使用,为仕么在单独引入时却不能引用了,真是百思不得其解. 经过在百度上的查找才知道,原来Sc ...

  7. ubuntu配置kvm服务

    虚拟化第一弹,lei了lei了~ 首先,简单介绍一下KVM服务. KVM 全称是 Kernel-Based Virtual Machine,它是一种常用的虚拟化工具.是基于linux内核所开发的虚拟平 ...

  8. nasm 使用总结

    1,编译 nasm -f bin myfile.asm -o myfile  生成目标文件 nasm -f bin myfile.asm -l myfile   生成清单文件 2,快速开始 nasm是 ...

  9. 7.Linux查找目录下的所有文件中是否含有某个字符串

    grep -rn "map" * 说明:-r 是递归查找-n 是显示行号* : 表示当前目录所有文件,也可以是某个文件名

  10. 第七章 ZYNQ-MIZ701 GPIO使用之EMIO

    7.0难度系数★☆☆☆☆☆☆ 7.1硬件截图 7.1.1 PCB上的位置 7.1.1 PCB上的位置 7.2电路分析 本次实验用到的是LD_A0~LD_A3,管脚定义如下表所示. LD_A0:F17 ...