一、变量

变量的作用:记录状态的变化
变量的值:描述不同的状态

二、五大基本数据类型的分类

五大基本数据类型(数字 字符串 列表 元祖 字典)

按照可变不可变来进行分类

可变:列表、字典

不可变:字符串、数字、元祖

我个人理解,所谓可变,是指当修改内容是,内容改变,地址不变。(即新修改的内容可以覆盖之前的内容即为可变)

按照访问顺序来进行分类

直接访问:数字
顺序访问:字符串、列表、元祖
映射访问:字典

按照存放元素的个数来进行分类

容器类型:列表、元祖、字典
原子类型:数字、字符串

三、基本数据类型补充——集合(set)

set集合,是一个无序且不重复的元素集合

定义:

  • 不同元素组成
  • 无序
  • 集合中的元素必须是不可变类型(字符串、数字、元祖)

集合的创建:

可以使用大括号 { } 或者 set() 函数创建集合

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

S = {value1,value2,...}

或者

set(value)
#集合的创建(第二个集合在打印过程中自动去除重复元素)
s1 = set('hello')
s2 = {123,'alex','xhg','alex'}
print(s1,s2 ) #执行结果
{'h', 'l', 'e', 'o'}
{'alex', 'xhg', 123}

集合的功能

1.add

  • Add an element to a set.
  • This has no effect if the element is already present.
#当添加的元素原集合中不存在时,无应答
s1 = {123,'alex','xhg'}
s1.add('lb')
print(s1 )
#执行结果
{'alex', 123, 'lb', 'xhg'}
#当添加的元素原集合中存在时
s1 = {123,'alex','xhg'}
s1.add('alex')
print(s1 )
#执行结果
{'alex', 123, 'xhg'}

2.clear

  • Remove all elements from this set.
s1 = {123,'alex','xhg',('lucy',888),'pyh'}
s1.clear()
print(s1) #执行结果
set()

3.copy

Return a shallow copy of a set.

s1 = {123,'alex','xhg'}
s2 = s1.copy()
print(s2) #执行结果
{'xhg', 123, 'alex'}

4.difference

  • 从数学角度来讲,就是求差集(但是各自集合元素并未发生变化)
  • Return the difference of two or more sets as a new set.
s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'alex',888,'','lb','math'} print(s1.difference(s2))#s1集合里不同于s2集合里的元素(最终输出的元素是s1集合里的元素)
#执行结果
{123, 'xhg', (), 'english'} print(s2.difference(s1))#s2集合里不同于s1集合里的元素(最终输出的元素是s2集合里的元素)
#执行结果
{'lb', 'math'}

求差集还可以用符号来表示:

s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'alex',888,'','lb','math'}
print(s1 - s2)
print(s2 - s1)
#执行结果
{123, 'xhg', (), 'english'}
{'math', 'lb'}

5.difference_update

  • 求差集之后对集合做更新
  • Remove all elements of another set from this set.
s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'alex',888,'','lb','math'}
print(s1.difference_update(s2))
print(s1)
print(s2) #执行结果
None
{'english', 'xhg', (), 123}
{'', 'math', 'lb', 888, 'alex'}
#从执行结果中,我们可以看出来 s1.difference_update(s2) 是将s1集合中同s2集合中元素相同的移除,s1集合内元素进行了更新

6.discard

  • 删除目标集合中的指定元素,若该元素不存在,则不会报错
  • Remove an element from a set if it is a member.
  • If the element is not a member, do nothing.
s1 = {'alex',888,'','lb','math'}
s1.discard('alex')
print(s1) #执行结果
{'', 'lb', 888, 'math'}

7.intersection

从数学角度来讲,就是求交集(但是各自集合元素并未发生变化)

s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'alex',888,'','lb','math'}
print(s1.intersection(s2)) #求集合 s1 与集合 s2 共有的元素 #执行结果
{'', 'alex', 888}

求交集还可以用符号来表示:

s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'alex',888,'','lb','math'}
print(s1 & s2)

8.intersection_update

(同difference_update)
求交集之后对集合做一个更新

s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'alex',888,'','lb','math'}
s1.intersection_update(s2)
print(s1,s2)
#执行结果
{'', 888, 'alex'}
{'', 'math', 888, 'lb', 'alex'}
#从执行结果中,我们可以看出来 s1.intersection_update(s2) 是将s1集合s2集合中元素相同的更新放入s1集合

9.isdisjoint

  • 比较两个集合是否有共有元素,如果没有的话返回 True,否则返回 False
  • Return True if two sets have a null intersection.
s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'lb','math'}
print(s1.isdisjoint(s2)) #执行结果
True

10.issubset

  • 判断一个集合是否为另一集合的子集
  • Report whether another set contains this set.
s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'xhg',888,'english'}
print(s2.issubset(s1))#判断集合s2是否为集合s1的子集 #执行结果
True

11.issuperset

判断一个集合是否为另一集合的父集

s1 = {123,'alex','xhg',888,'english',(),''}
s2 = {'xhg',888,'english'}
print(s1.issuperset(s2))#判断集合s1是否为集合s2的父集 #执行结果
True

12.pop

  • 随机删除集合中的元素
  • Remove and return an arbitrary set element.
  • Raises KeyError if the set is empty.
s1 = {123,'alex','xhg',888,9}
s1.pop()
print(s1)

13.remove

  • 删除目标集合中的指定元素,若该元素不存在,则会报错(所以通常删除集合中指定元素,不用remove,选择discard)
  • Remove an element from a set; it must be a member.
  • If the element is not a member, raise a KeyError.
s1 = {123,'alex','xhg',888,'english'}
s1.remove(666)
print(s1)

14.symmetric_difference

  • Return the symmetric difference of two sets as a new set.
  • 从数学角度上来说,是求交叉补集
s1 = {123,'alex','xhg',888,'english'}
s2 = {123,'alex','xhg','love'}
print(s1.symmetric_difference(s2))
#执行结果
{'love', 888, 'english'}
#从结果上来看,交叉补集就是两个集合除去公共部分外,各自剩下的元素组成的集合

15.symmetric_difference_update

s1 = {123,'alex','xhg',888,'english'}
s2 = {123,'alex','xhg','love'}
s1.symmetric_difference_update(s2)
print(s1,s2)
#执行结果
{'love', 'english', 888}
{'xhg', 123, 'alex', 'love'}
#从执行结果中,我们可以看出来 s1.symmetric_difference_update(s2) 是将两集合求交叉补集并将结果更新放入s1集合

16.union

  • 从数学角度上来说,是求并集
  • Return the union of sets as a new set.
s1 = {123,'alex','xhg',888,'english'}
s2 = {123,'alex','xhg','love'}
print(s1.union(s2))
#执行结果
{'english', 'love', 888, 123, 'alex', 'xhg'}

求并集还可以用符号来表示:

s1 = {123,'alex','xhg',888,'english'}
s2 = {123,'alex','xhg','love'}
print(s1 | s2)
#执行结果
{'english', 'love', 888, 123, 'alex', 'xhg'}

17.update

  • Update a set with the union of itself and others.
s1 = {123,'alex','xhg',888,'english'}
s2 = {123,'alex','xhg','love',666}
print(s1.update(s2))
print(s1)
#执行结果
{'xhg', 'love', 888, 'english', 'alex', 666, 123}

Python小白学习之路(八)—【变量】【基本数据类型分类】【集合】【集合的功能】的更多相关文章

  1. Python小白学习之路(四)——第一次练习题

    写在前面: 今天下雪了呢!连着两天都没有更新学习记录. 我没有偷懒呢.做了一天的练习题,昨天学的内容还没总结完,太累了就回去睡觉了 连续一周早起,强大的内心也无法支撑我疲惫的身体 今天早起做了整理.加 ...

  2. Python小白学习之路(十八)—【内置函数三】

    一.对象操作 help() 功能:返回目标对象的帮助信息 举例: print(help(input)) #执行结果 Help on built-in function input in module ...

  3. Python小白学习之路(十)—【函数】【函数返回值】【函数参数】

    写在前面: 昨天早睡之后,感觉今天已经恢复了百分之八十的样子 又是活力满满的小伙郭 今日份鸡汤: 我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活.-------宫崎 ...

  4. Python小白学习之路(九)—【字符串格式化】【百分号方式】【format方式】

    写在前面: 最近的事情好像有很多.李咏的离去,让我觉得很突然,仿佛印象中就是主持节目的他,看着他和哈文的爱情,很是感动.离去,没有什么抱怨,只是遗憾. 总会感慨,时光的流逝. 好像真的很快,转眼间,我 ...

  5. Python小白学习之路(二)—【Pycharm安装与配置】【创建项目】【运算符】【数据类型】

    写在前面: 第二天的学习,感觉比昨天学习相对轻松一些,但是对于我这个编程语言功底很弱的人来说,还是稍稍微有些.....哈尔滨的天气一天天冷了下来,还飘着小雨,不过还是挺有意境的.充实而又忙碌的生活,让 ...

  6. Python小白学习之路(二十六)—【if __name__ =='__main__':】【用状态标识操作】

    规则一: 一个python文件中,只写一些可以运行的功能测试代码写在这句代码下面 if __name__ =='__main__': 在讲这边的时候,我不是很懂参考了一篇博客,地址如下:http:// ...

  7. Python小白学习之路(二十四)—【装饰器】

    装饰器 一.装饰器的本质 装饰器的本质就是函数,功能就是为其他函数添加附加功能. 利用装饰器给其他函数添加附加功能时的原则: 1.不能修改被修饰函数的源代码        2.不能修改被修饰函数的调用 ...

  8. Python小白学习之路(二十二)—【生成器】

    一.什么是生成器? 生成器可以理解成是一种数据类型,特殊地是生成器可以自动实现迭代器协议其他的数据类型需要调用自己内置的__iter__方法所以换种说法,生成器就是可迭代对象 !回忆:很重要的迭代器协 ...

  9. Python小白学习之路(二十)—【打开文件的模式二】【文件的其他操作】

    打开文件的模式(二) 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码.图片文件的jgp格 ...

随机推荐

  1. 创建DB2数据库联合对象

    db2 1.db2 =>update dbm cfg using Federated YES 2. db2 =>db2stop force3. db2 =>db2start 4.创建 ...

  2. An integration of deep learning and neuroscience

    Recently, I have read a paper about the integration of deep learing and neuroscience, which elaborat ...

  3. 2018.07.23 洛谷P4097 [HEOI2013]Segment(李超线段树)

    传送门 给出一个二维平面,给出若干根线段,求出x" role="presentation" style="position: relative;"&g ...

  4. 2018.07.22 洛谷P4316 绿豆蛙的归宿(概率dp)

    传送门 简单的递推. 由于是DAG" role="presentation" style="position: relative;">DAGDA ...

  5. (有点递归的感觉)RGCDQ--hdu--5317

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5317 感觉好神奇呀,一堆数在一起可以找到规律,学长讲完后,觉得自己是如此的so young f[x] ...

  6. Codeforces805 A. Fake NP 2017-05-05 08:30 327人阅读 评论(0) 收藏

    A. Fake NP time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  7. STL中list中push_back(对象)保存对象的内部实现

    STL中list中push_back(对象)保存对象的内部实现 1. 在容器中,存放的是对象拷贝 #include<iostream> #include<list> using ...

  8. mac与win7(台式电脑)共享文件

    人生处处又都坑,自己走过了,所以记下来. mac共享文件,win7访问: 1.系统偏好设置-共享-都选中就行.一般都会这样说. 2.系统偏好设置-用户与群组-解锁-客人用户-允许客人用户连接到共享文件 ...

  9. 解决由AJAX请求时forms认证实效的重新认证问题

    前言: 当用AJAX请求一个资源时,服务器检查到认证过期,会重新返回302,通过HTTP抓包,是看到请求了登录页面的,但是JS是不会进行跳转到登录页面. 使用环境: ASP.NET MVC 4 JQU ...

  10. Android Studio 集成 TFS,实现安卓移动开发的持续集成和交付(DevOps)

    目录 1 集成TFS系统.... 1.1 概述.... 1.2 安装TFS插件.... 1.2.1 在线安装方式.... 1.2.2 离线安装方案.... 1.3 常见操作.... 1.3.1 新建G ...