一、元组

1.元组基础

  1)定义:不可变的‘列表’,定义方式(元素1,元素2.......)

  2)用途:存多个值,但是只能读不能写

  注意:元组的不可变指的是元组内元素id的不可变

t = (11,2,3,5,3)
#tuple(11,2,3,5)

2.元组常规操作+内置方法

  1)按索引取值(正、反取值,但是不可更改)

t = (11,2,3,5,3)
print(t[2])
print(t[-1])

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

# 取第 2-3 个元素
print(t[1:3])

  3)求长度

print(len(t))

  4)成员运算in 和 not in

print(2 in t)

  5)查看索引和计算相同元素的个数

# 查看索引print(t.index(2))

# 计算相同元素的个数print(t.count(3)

总结:

  1.可存多个值

  2.有序

  3.不可变的

二、字典

1.字典基础

  1)用途:以key:value形式存多个值

  2)优点:存储快,每个值都有对应的key

  3)定义方式:}内以逗号隔开多个元素,格式为{key:value....}

  注意:key必须为不可变类型,value可以是任意类型

dic = dict({'name':'zhang','age':18,'x':8,'y':10})
dic = {'name':'zhang','age':18,'x':8,'y':10}
print(dic)

2.字典常规操作+内置方法

  1)按key取值,可存可取

dic = {'name':'zhang','age':18}
dic['name'] = 'zh'
print(dic)

  2)求长度

print(len(dic))

  3)成员运算in 和 not in

print('name' in dic)

  4)pop()

# pop(self,key,default)实现删除,返回删除的元素的value
# 设置default参数时,可在不存在这个key时做出返回,默认返回None
res = dic.pop('name')
res1 = dic.pop('sss','不存在这个key')
print(res)
print(res1)

  5)key()、value()、items()

# key()  查看字典中的键值
print(dic.keys()) # value() 查看字典中value值
print(dic.values()) # items() 查看键对
print(dic.items()) # 循环打印出key,默认打印的就是key
for x in dic.keys():
print(x) # 循环打印出value
for value in dic.values():
print(value) # 循环打印key和value
for i,j in dic.items():
print(i,j)

3.需要掌握的操作

  1)get()

# 根据索引获取value
# 当不存在key返回None
print(dic.get('name'))
print(dic.get('sss'))

  2)popitem()

# 从末尾开始弹出,并返回key和value
print(dic.popitem())

  3)update()

# update() 更新
# 原字典中存在这个key则修改value值,若不存在则添加
print(dic.update({'x':8,'age':20}))
print(dic)

  4)setdefault()

# 字典中有这个key,则不修改,返回原来的key对应的value
# 没有这个key,则添加并返回添加的key的对应的value
res = dic.setdefault('name','ch')
res1 = dic.setdefault('x','hyjk')
print(res)
print(res1)

  5)fromkeys()

# 往空字典中批量添加key,默认vlaue为None
dic_1 = {}
dic_1 = dic_1.fromkeys(['name','age','sex'],None)
print(dic_1)
dic_1['name'] = 'zhang'
print(dic_1)

总结:

  1.可存多个值

  2.无序

  3.可变

练习:

msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
} for i,j in msg_dic.items():
print(i,j) for key in msg_dic:
print(key,msg_dic[key]) for i in msg_dic.keys():
print(i)
for j in msg_dic.values():
print(j) # 避免key不存在字典中报错,使用get()
print(msg_dic['sss'])
print(msg_dic.get('zhang','输入正确的key')) # 字典操作
set_1 = set({11,22,33,44,55,66,77,88,99,90})
dic_1 = {'k1':[],'K2':[]}
print(set_1)
for i in set_1:
if i > 66:
dic_1['k1'].append(i)
else:
dic_1['K2'].append(i)
print(dic_1) # 统计s='hello alex alex say hello sb sb'
# 中每个单词的个数结果如:
# {'hello': 2, 'alex': 2, 'say': 1, 'sb': 2} s = 'hello alex alex say hello sb sb'
list_s = list(s.split(' '))
dic_s = {}
for i in list_s:
count = list_s.count(i)
dic_s.setdefault(i,count)
print(list_s)
print(dic_s)
三、集合

1.集合基础

  1)定义方式:在{元素1,元素2...}内用逗号分隔开元素

  2)注意问题:集合中没有重复的元素,且无序

          集合的元素必须是不可变类型

  3)用途:关系运算

        去重

# 定义
s = set({1,2,3,4,5,6,4,4,4,4,4'a'})
s = {1,2,3,4,5,6,4,4,4,4,4,'a'}
print(id(s),type(s),s) # 去重
ist_1 = ['a','b','b','c','c','c','s']
print(list(set(list_1)))

  注意:集合中的元素!!!必须是不可变的,但是集合是可变的,因此不能用列表等可变的数据类型作为元素

s = {[1,2,3],'aa'}    # 列表可变,会报错

2.集合常规操作+内置方法实现集合运算

study_linux = {'zhang','alex','egon','李铁','张三'}
study_python = {'李四','zhang','alex','猪','猫','狗'}

  1)交集

print(study_linux & study_python)
print(study_linux.intersection(study_python))

  2)并集

print(study_linux | study_python)
print(study_linux.union(study_python))

  3)差集

print(study_linux - study_python)
print(study_linux.difference(study_python)) print(study_python - study_linux)
print(study_python.difference(study_linux))

  4)交叉补集---两个集合中不相同的元素的集合

print(study_linux ^ study_python)
print(study_linux.symmetric_difference(study_python))

3.需要掌握的操作

study_linux = {'zhang','alex','egon','李铁','张三'}
study_python = {'李四','zhang','alex','猪','猫','狗'}

  1)循环取值

for item in study_linux:
print(item)

  2)求长度

print(len(study_linux))

  3)成员运算in 和 not in

print(len(study_linux))

  4)删除

# discard() 当删除的元素不存在时,不会报错
# 使用remove()时,不存在会报错
study_python.discard('不存在')
print(study_python)
study_linux.discard('zhang')
print(study_linux) # 因为集合是无序的,所以pop()时是随机删除某个元素
study_linux.pop()
print(study_linux)

4.了解知识点

# 父集:爹包含儿子
s1={1,2,3}
s2={1,2}
print(s1.issubset(s2))
print(s2.issubset(s1))
print(s1.issuperset(s2)) # 实现对列表去重,但保留原列表的顺序
list_old = ['a','d','g','a','sjsjsj','d','a']
list_new = []
set_1 = set({}) for item in list_old:
# 当集合中不存在去到的item即list_old的元素时,
# 则添加到集合和新的列表中,如此循环旧的列表
if item not in set_1:
set_1.add(item)
list_new.append(item)
print(list_old)
print(list_new)

总结:

  1.可存多个值

  2.无序

  3.不可变

Python全栈-day5-数据类型的更多相关文章

  1. python全栈 字典数据类型相关知识及操作

    python 全栈开发 一.字典 1. 字典的概念: 字典 : dict 用 {} 来表示,   键位值数据. { key , value }    具有唯一性. 键:都必须是可哈希的     不可变 ...

  2. python全栈 字符串,整数,bool 数据类型运用

    python全栈 一.基本数据类型 1.int: 整数 2.str: 字符串, 一般不存放大量数据. 3.bool: 布尔值,用来判断. True  或者  False 4.list:  列表,用来存 ...

  3. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  4. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  5. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  6. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  7. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  8. Python全栈开发【基础一】

    Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...

  9. python全栈开发-Day2 布尔、流程控制、循环

    python全栈开发-Day2 布尔 流程控制 循环   一.布尔 1.概述 #布尔值,一个True一个False #计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人 ...

  10. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

随机推荐

  1. iOS只给矩形两个边加圆角

    - (void)updataTopCornerRadius { CGRect clipRect = CGRectMake(, , self.headPhotoIv.width, self.headPh ...

  2. 洛谷P1966 火柴排队 贪心+离散化+逆序对(待补充QAQ

    正解: 贪心+离散化+逆序对 解题报告: 链接在这儿呢quq 这题其实主要难在想方法吧我觉得?学长提点了下说用贪心之后就大概明白了,感觉没有很难 但是离散化这里还是挺有趣的,因为并不是能很熟练地掌握离 ...

  3. Android Studio安装配置

    1.首先我们进官网 http://www.android-studio.org/  (注意一下除了SDK外还需要JDK) 2.选择历史版本下载 3.随意选择版本这里笔者选用1.2.1版本,主要下带bu ...

  4. 'react-scripts' is not recognized as an internal or external command

    React项目在执行npm start的时候报下面的错误: 解决办法:把项目目录中node_modules文件夹删掉,重新npm install一下,然后再执行npm start

  5. weblogic学习教程(一)

    一.简介 WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发.集成.部署和管理大型分布式Web ...

  6. 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白

    这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ...

  7. MySQL5.7配置基于GTID的复制

    MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...

  8. ORACLE安装入门篇OEL5.4安装ORACLE11g

    一.安装ORACLE11g软件(11.2.0.0) (一)安装前的包支持 1.检测yum仓库是否已经配置好 yum list all 2.搭建yum仓库 1).挂载所需要的安装光盘 虚拟机挂载光盘: ...

  9. 导出toolStrip1中的图标

    foreach (ToolStripItem c in toolStrip1.Items) { if (!(c is ToolStripButton)) continue; var btn = (To ...

  10. Redis入门到高可用(八)——list

    一.结构 key - value 结构,value是一个有序队列. 可进行左边的添加及弹出,右边的添加及弹出. 可获取列表的长度,删除列表中指定元素,获取列表的子列表,按照索引获取列表的指定元素. 特 ...