• 0基础,跟我一起学python---基础篇


     📢📢📢📣📣📣
    哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝
    一位上进心十足的【Java ToB端大厂领域博主】!😜😜😜
    喜欢java和python,平时比较懒,能用程序解决的坚决不手动解决😜😜😜

    ✨ 如果有对【java】感兴趣的【小可爱】,欢迎关注我

    ❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
    ————————————————

    本教程适合想从零开始学习 Python 编程语言的开发人员。当然想重新温习python的也可以粗略浏览,帮我找一下问题。

    我是一名java开发,由于java代码写起来很多东西的操作不是很方便,所以最近想系统的学习一下python。确实python在很多方面是真香,今天我们就来走进python的时间,学习用python如何构建我们的世界的。

    如果您还没有搭建好python环境,可参考我的这篇文章

    万事开头难----手把手教你再macOS上安装pythonhttps://blog.csdn.net/qq_29235677/article/details/122151828

    目录

    ⛳️0.Python简介

    Python 发展历史

    Python 应用

    ⛳️1.基础语法

    标识符

    保留字

    行与缩进

    基本数据类型

    多个变量赋值

    标准数据类型

    Number(数字)

     数值运算

    String(字符串)

    List(列表)

    元组:

    Set(集合)

    Dictionary(字典)

    Python数据类型转换

    隐式类型转换

    显式类型转换

    ⛳️ 2.条件语句if、三元表达式和循环语句break等语句的使用

    1)条件语句

    2)三元表达式

    3)循环语句

    for循环

    while循环

    嵌套结构

    break语句 

    continue语句:

    pass 语句

    ⛳️ 3.常见的数据结构

    可变和不可变:

    list列表:[ ]

    增:

    删:

    查询:

    在指定位置添加

    弹出:

    元组的转换:

    常见的函数

    dict字典 map:

    添加:

    删除 

    字典键的特性

    内置函数

    内置方法

    set集合:

    两个集合间的运算

    基本操作:

    添加:

    移除:

    计算个数:

     清空:

    判断是否存在:

    tuple元组:( )

    创建空元组:

    查询:

    删除:

    修改:

    元组运算符

    元组索引,截取

    无关闭分隔符

    内置函数


    ⛳️0.Python简介

    Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

    Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

    • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

    • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

    • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

    • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

    Python 发展历史

    Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。

    Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。

    像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。

    现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。

    Python 2.0 于 2000 年 10 月 16 日发布,增加了实现完整的垃圾回收,并且支持 Unicode。

    Python 3.0 于 2008 年 12 月 3 日发布,此版不完全兼容之前的 Python 源代码。不过,很多新特性后来也被移植到旧的Python 2.6/2.7版本。

    Python 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。

    Python 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法。

    Python 应用

    • Youtube - 视频社交网站
    • Reddit - 社交分享网站
    • Dropbox - 文件分享服务
    • 豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站
    • 知乎 - 一个问答网站
    • 果壳 - 一个泛科技主题网站
    • Bottle - Python微Web框架
    • EVE - 网络游戏EVE大量使用Python进行开发
    • Blender - 使用Python作为建模工具与GUI语言的开源3D绘图软件
    • Inkscape - 一个开源的SVG矢量图形编辑器。

    这么多大公司都在用python开发,是不是心动了呢。下面跟我一起学习python吧

     

    ⛳️1.基础语法

    标识符

    • 第一个字符必须是字母表中字母或下划线 _ 。
    • 标识符的其他的部分由字母、数字和下划线组成。
    • 标识符对大小写敏感。

    在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。

    保留字

    下面的字段都是python中内置的变量即关键字,像其他语言一样,不能使用这些关键字命名变量。

    Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

    ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
     

    行与缩进

    python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

    缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:

    1. if True:
    2. print ("Answer")
    3. print ("True")
    4. else:
    5. print ("Answer")
    6. print ("False") # 缩进不一致,会导致运行错误

    .hello world

    我们还是从最经典的hello world开始我们的学习。python的打印真的是简单,只需要一行就能完成 

    1. print("hello word")
    2. print(type(1))
    3. print(type("hello"))

    基本数据类型

    Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

    在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

    等号(=)用来给变量赋值。

    等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:

    1. counter = 100 # 整型变量
    2. miles = 1000.0 # 浮点型变量
    3. name = "runoob" # 字符串

    多个变量赋值

    Python允许你同时为多个变量赋值。例如:

    a = b = c = 1

    以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。

    您也可以为多个对象指定多个变量。例如:

    a, b, c = 1, 2, "runoob"

    标准数据类型

    Python3 中有六个标准的数据类型:

    • Number(数字)
    • String(字符串)
    • List(列表)
    • Tuple(元组)
    • Set(集合)
    • Dictionary(字典)

    Python3 的六个标准数据类型中:

    • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
    • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

    Number(数字)

    Python3 支持 int、float、bool、complex(复数)

    在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

    像大多数语言一样,数值类型的赋值和计算都是很直观的。

    内置的 type() 函数可以用来查询变量所指的对象类型。

    1. >>> a, b, c, d = 20, 5.5, True, 4+3j
    2. >>> print(type(a), type(b), type(c), type(d))
    3. <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

    此外还可以用 isinstance 来判断:

    1. >>> a = 111
    2. >>> isinstance(a, int)
    3. True
    4. >>>

    isinstance 和 type 的区别在于:

    • type()不会认为子类是一种父类类型。
    • isinstance()会认为子类是一种父类类型。
    1. >>> class A:
    2. ... pass
    3. ...
    4. >>> class B(A):
    5. ... pass
    6. ...
    7. >>> isinstance(A(), A)
    8. True
    9. >>> type(A()) == A
    10. True
    11. >>> isinstance(B(), A)
    12. True
    13. >>> type(B()) == A
    14. False

    注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。

    在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。

     数值运算

    1. >>> 5 + 4  # 加法
    2. 9
    3. >>> 4.3 - 2 # 减法
    4. 2.3
    5. >>> 3 * 7  # 乘法
    6. 21
    7. >>> 2 / 4  # 除法,得到一个浮点数
    8. 0.5
    9. >>> 2 // 4 # 除法,得到一个整数
    10. 0
    11. >>> 17 % 3 # 取余
    12. 2
    13. >>> 2 ** 5 # 乘方
    14. 32

    注意:

    • 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
    • 2、一个变量可以通过赋值指向不同类型的对象。
    • 3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
    • 4、在混合计算时,Python会把整型转换成为浮点数。

    String(字符串)

    Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。

    字符串的截取的语法格式如下:

    变量[头下标:尾下标]

    索引值以 0 为开始值,-1 为从末尾的开始位置。

    加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,与之结合的数字为复制的次数。实例如下:

    1. str = 'Runoob'
    2. print (str) # 输出字符串
    3. print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
    4. print (str[0]) # 输出字符串第一个字符
    5. print (str[2:5]) # 输出从第三个开始到第五个的字符
    6. print (str[2:]) # 输出从第三个开始的后的所有字符
    7. print (str * 2) # 输出字符串两次,也可以写成 print (2 * str)
    8. print (str + "TEST") # 连接字符串

    输出

    Runoob
    Runoo
    R
    noo
    noob
    RunoobRunoob
    RunoobTEST

    ython 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:

    1. >>> print('Ru\noob')
    2. Ru
    3. oob
    4. >>> print(r'Ru\noob')
    5. Ru\noob
    6. >>> 

    另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行。

    注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。

    1. >>> word = 'Python'
    2. >>> print(word[0], word[5])
    3. P n
    4. >>> print(word[-1], word[-6])
    5. n P

    Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。

    注意:

    • 1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
    • 2、字符串可以用+运算符连接在一起,用*运算符重复。
    • 3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
    • 4、Python中的字符串不能改变。

    List(列表)

    List(列表) 是 Python 中使用最频繁的数据类型。

    列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

    列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

    和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

    列表截取的语法格式如下:

    变量[头下标:尾下标]

    索引值以 0 为开始值,-1 为从末尾的开始位置。

    加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:

    1. list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
    2. tinylist = [123, 'runoob']
    3. print (list) # 输出完整列表
    4. print (list[0]) # 输出列表第一个元素
    5. print (list[1:3]) # 从第二个开始输出到第三个元素
    6. print (list[2:]) # 输出从第三个元素开始的所有元素
    7. print (tinylist * 2) # 输出两次列表
    8. print (list + tinylist) # 连接列表

     输出结果

    ['abcd', 786, 2.23, 'runoob', 70.2]
    abcd
    [786, 2.23]
    [2.23, 'runoob', 70.2]
    [123, 'runoob', 123, 'runoob']
    ['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']

    与Python字符串不一样的是,列表中的元素是可以改变的

    1. >>> a = [1, 2, 3, 4, 5, 6]
    2. >>> a[0] = 9
    3. >>> a[2:5] = [13, 14, 15]
    4. >>> a
    5. [9, 2, 13, 14, 15, 6]
    6. >>> a[2:5] = [] # 将对应的元素值设置为 []
    7. >>> a
    8. [9, 2, 6]

    List 内置了有很多方法,例如 append()、pop() 等等,这在后面会讲到。

    注意:

    • 1、List写在方括号之间,元素用逗号隔开。
    • 2、和字符串一样,list可以被索引和切片。
    • 3、List可以使用+操作符进行拼接。
    • 4、List中的元素是可以改变的。

    Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:

    如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串:

    1. def reverseWords(input):
    2. # 通过空格将字符串分隔符,把各个单词分隔为列表
    3. inputWords = input.split(" ")
    4. # 翻转字符串
    5. # 假设列表 list = [1,2,3,4],
    6. # list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
    7. # inputWords[-1::-1] 有三个参数
    8. # 第一个参数 -1 表示最后一个元素
    9. # 第二个参数为空,表示移动到列表末尾
    10. # 第三个参数为步长,-1 表示逆向
    11. inputWords=inputWords[-1::-1]
    12. # 重新组合字符串
    13. output = ' '.join(inputWords)
    14. return output
    15. if __name__ == "__main__":
    16. input = 'I like runoob'
    17. rw = reverseWords(input)
    18. print(rw)

    runoob like I
    

    元组:

    元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

    元组中的元素类型也可以不相同:

    1. tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
    2. tinytuple = (123, 'runoob')
    3. print (tuple) # 输出完整元组
    4. print (tuple[0]) # 输出元组的第一个元素
    5. print (tuple[1:3]) # 输出从第二个元素开始到第三个元素
    6. print (tuple[2:]) # 输出从第三个元素开始的所有元素
    7. print (tinytuple * 2) # 输出两次元组
    8. print (tuple + tinytuple) # 连接元组

    输出结果 

    ('abcd', 786, 2.23, 'runoob', 70.2)
    abcd
    (786, 2.23)
    (2.23, 'runoob', 70.2)
    (123, 'runoob', 123, 'runoob')
    ('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')

    元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。

    虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

    构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

    1. tup1 = () # 空元组
    2. tup2 = (20,) # 一个元素,需要在元素后添加逗号

    string、list 和 tuple 都属于 sequence(序列)。

    注意:

    • 1、与字符串一样,元组的元素不能修改。
    • 2、元组也可以被索引和切片,方法一样。
    • 3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
    • 4、元组也可以使用+操作符进行拼接。

    Set(集合)

    集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

    基本功能是进行成员关系测试和删除重复元素。

    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    创建格式:

    1. parame = {value01,value02,...}
    2. 或者
    3. set(value)
    1. sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
    2. print(sites) # 输出集合,重复的元素被自动去掉
    3. # 成员测试
    4. if 'Runoob' in sites :
    5. print('Runoob 在集合中')
    6. else :
    7. print('Runoob 不在集合中')
    8. # set可以进行集合运算
    9. a = set('abracadabra')
    10. b = set('alacazam')
    11. print(a)
    12. print(a - b) # a 和 b 的差集
    13. print(a | b) # a 和 b 的并集
    14. print(a & b) # a 和 b 的交集
    15. print(a ^ b) # a 和 b 中不同时存在的元素

    输出结果

    {'Zhihu', 'Baidu', 'Taobao', 'Runoob', 'Google', 'Facebook'}
    Runoob 在集合中
    {'b', 'c', 'a', 'r', 'd'}
    {'r', 'b', 'd'}
    {'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
    {'c', 'a'}
    {'z', 'b', 'm', 'r', 'l', 'd'}

    Dictionary(字典)

    字典(dictionary)是Python中另一个非常有用的内置数据类型。

    列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

    键(key)必须使用不可变类型。

    在同一个字典中,键(key)必须是唯一的。

    1. dict = {}
    2. dict['one'] = "1 - 菜鸟教程"
    3. dict[2] = "2 - 菜鸟工具"
    4. tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
    5. print (dict['one']) # 输出键为 'one' 的值
    6. print (dict[2]) # 输出键为 2 的值
    7. print (tinydict) # 输出完整的字典
    8. print (tinydict.keys()) # 输出所有键
    9. print (tinydict.values()) # 输出所有值
    1 - 菜鸟教程
    2 - 菜鸟工具
    {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
    dict_keys(['name', 'code', 'site'])
    dict_values(['runoob', 1, 'www.runoob.com'])

    构造函数 dict() 可以直接从键值对序列中构建字典如下:

    1. >>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
    2. {'Runoob': 1, 'Google': 2, 'Taobao': 3}
    3. >>> {x: x**2 for x in (2, 4, 6)}
    4. {2: 4, 4: 16, 6: 36}
    5. >>> dict(Runoob=1, Google=2, Taobao=3)
    6. {'Runoob': 1, 'Google': 2, 'Taobao': 3}

    {x: x**2 for x in (2, 4, 6)} 该代码使用的是字典推导式,更多推导式内容可以参考:Python 推导式

    另外,字典类型也有一些内置的函数,例如 clear()、keys()、values() 等。

    注意:

    • 1、字典是一种映射类型,它的元素是键值对。
    • 2、字典的关键字必须为不可变类型,且不能重复。
    • 3、创建空字典使用 { }

    Python数据类型转换

    有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

    Python 数据类型转换可以分为两种:

    • 隐式类型转换 - 自动完成
    • 显式类型转换 - 需要使用类型函数来转换

    隐式类型转换

    在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。

    以下实例中,我们对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。

    1. num_int = 123
    2. num_flo = 1.23
    3. num_new = num_int + num_flo
    4. print("datatype of num_int:",type(num_int))
    5. print("datatype of num_flo:",type(num_flo))
    6. print("Value of num_new:",num_new)
    7. print("datatype of num_new:",type(num_new))
    num_int 数据类型为: 
    num_flo 数据类型为: 
    num_new: 值为: 124.23
    num_new 数据类型为: 

    代码解析:

    • 实例中我们对两个不同数据类型的变量 num_int 和 num_flo 进行相加运算,并存储在变量 num_new 中。
    • 然后查看三个变量的数据类型。
    • 在输出结果中,我们看到 num_int 是 整型(integer) , num_flo 是 浮点型(float)
    • 同样,新的变量 num_new 是 浮点型(float),这是因为 Python 会将较小的数据类型转换为较大的数据类型,以避免数据丢失。

    整型数据与字符串类型的数据进行相加:

    1. num_int = 123
    2. num_str = "456"
    3. print("Data type of num_int:",type(num_int))
    4. print("Data type of num_str:",type(num_str))
    5. print(num_int+num_str)
    num_int 数据类型为: 
    num_str 数据类型为: 
    Traceback (most recent call last):
      File "/runoob-test/test.py", line 7, in 
        print(num_int+num_str)
    TypeError: unsupported operand type(s) for +: 'int' and 'str'

    从输出中可以看出,整型和字符串类型运算结果会报错,输出 TypeError。 Python 在这种情况下无法使用隐式转换。

    但是,Python 为这些类型的情况提供了一种解决方案,称为显式转换。

    显式类型转换

    在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str() 等预定义函数来执行显式类型转换。

    int() 强制转换为整型:

    1. x = int(1) # x 输出结果为 1
    2. y = int(2.8) # y 输出结果为 2
    3. z = int("3") # z 输出结果为 3

    float() 强制转换为浮点型:

    1. x = float(1) # x 输出结果为 1.0
    2. y = float(2.8) # y 输出结果为 2.8
    3. z = float("3") # z 输出结果为 3.0
    4. w = float("4.2") # w 输出结果为 4.2

     str() 强制转换为字符串类型:

    1. x = str("s1") # x 输出结果为 's1'
    2. y = str(2) # y 输出结果为 '2'
    3. z = str(3.0) # z 输出结果为 '3.0'

    整型和字符串类型进行运算,就可以用强制类型转换来完成:

    1. num_int = 123
    2. num_str = "456"
    3. print("num_int 数据类型为:",type(num_int))
    4. print("类型转换前,num_str 数据类型为:",type(num_str))
    5. num_str = int(num_str) # 强制转换为整型
    6. print("类型转换后,num_str 数据类型为:",type(num_str))
    7. num_sum = num_int + num_str
    8. print("num_int 与 num_str 相加结果为:",num_sum)
    9. print("sum 数据类型为:",type(num_sum))
    num_int 数据类型为: 
    类型转换前,num_str 数据类型为: 
    类型转换后,num_str 数据类型为: 
    num_int 与 num_str 相加结果为: 579
    sum 数据类型为: 
    

    以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

    函数描述

    int(x [,base])

    将x转换为一个整数

    float(x)

    将x转换到一个浮点数

    complex(real [,imag])

    创建一个复数

    str(x)

    将对象 x 转换为字符串

    repr(x)

    将对象 x 转换为表达式字符串

    eval(str)

    用来计算在字符串中的有效Python表达式,并返回一个对象

    tuple(s)

    将序列 s 转换为一个元组

    list(s)

    将序列 s 转换为一个列表

    set(s)

    转换为可变集合

    dict(d)

    创建一个字典。d 必须是一个 (key, value)元组序列。

    frozenset(s)

    转换为不可变集合

    chr(x)

    将一个整数转换为一个字符

    ord(x)

    将一个字符转换为它的整数值

    hex(x)

    将一个整数转换为一个十六进制字符串

    oct(x)

    将一个整数转换为一个八进制字符串

    ⛳️ 2.条件语句if、三元表达式和循环语句break等语句的使用

    1)条件语句

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

    可以通过下图来简单了解条件语句的执行过程:

    Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。

    Python 编程中 if 语句用于控制程序的执行,基本形式为:

    1. if 判断条件:
    2. 执行语句……
    3. else
    4. 执行语句……

    下面是if条件语句的写法

    1. a = 2
    2. if a < 2:
    3. print("a<2")
    4. elif a > 2:
    5. print("a>2")
    6. else:
    7. print("a=2")

    最后执行结果是

    其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。

    else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。 

    下面是if的gif运行示例

    引用自菜鸟教程 

    2)三元表达式

    python中也有三元表达式,语法格式如下

    结果A if 条件 else 结果B

    这个表达式的含义是 如果结果成立返回结果A 如果不成立返回结果B, 

     x if x>y else y
    1. x = 4
    2. y = 2
    3. a = x if x > y else y
    4. print(a)
    5. print(x if x > y else y)

     这是一种类似于其它编程语言中三目运算符? :的写法。Python 是一种极简主义的编程语言,它没有引入? :这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。

    python中的三目运算还能嵌套使用Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else 的配对,例如:

    a if a>b else c if c>d else d

    可以理解成下面的表达式,后面先理解成一个整体

    a if a>b else ( c if c>d else d )

    3)循环语句

    • for循环
    • while循环

    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

    语法:

    for循环

    语法格式如下:

    1. for iterating_var in sequence:
    2. statements(s)

    简单迭代,这里能够对 字符数组进行迭代。

    1. for letter in 'Python': # 第一个实例
    2. print("当前字母: %s" % letter)
    3. fruits = ['banana', 'apple', 'mango']
    4. for fruit in fruits: # 第二个实例
    5. print ('当前水果: %s'% fruit)
    6. print ("Good bye!")

    计算1-100点所以数之和

    1. result = 0
    2. for i in range(101):
    3. result += i
    4. else:
    5. print("i的值%s和result的值%s" % (i, result))

    计算1-100所有偶数只和

    1. result = 0
    2. for i in range(101):
    3. if i % 2 == 0:
    4. result += i
    5. print(result)

     

    while循环

    语法结构:

    1. while condition:
    2. statement(s)

    用while循环实现1-100内数值相加计算

    1. i = 0
    2. result = 0
    3. while i < 101:
    4. result += i
    5. i += 1
    6. # print(result)
    7. print(result)

    while下一行就是循环的主题,后面的同一行的就是循环外部的(第一次使用python这种用缩进代替括号来实现方法的管理的有些不习惯)

    下面是引用 的一个动图:

    嵌套结构

    • for循环的嵌套
    • while的嵌套

    for循环♻️

    1. for iterating_var in sequence:
    2. for iterating_var in sequence:
    3. statements(s)
    4. statements(s)

    while循环♻️

    1. while expression:
    2. while expression:
    3. statement(s)
    4. statement(s)

    break语句 

    1. for letter in 'Python': # 第一个实例
    2. if letter == 'h':
    3. break
    4. print('当前字母 :', letter)
    5. var = 10 # 第二个实例
    6. while var > 0:
    7. print('当前变量值 :', var)
    8. var = var - 1
    9. if var == 5: # 当变量 var 等于 5 时退出循环
    10. break
    11. print("end!")

     python中的break和java中break功能相同,都是跳出当前的循环,继续执行下面的语句

    continue语句:

    Python continue 语句跳出本次循环,而break跳出整个循环。

    continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。

    continue语句用在while和for循环中。

    1. for letter in 'Python': # 第一个实例
    2. if letter == 'h':
    3. continue
    4. print('当前字母 :', letter)
    5. var = 10 # 第二个实例
    6. while var > 0:
    7. var = var - 1
    8. if var == 5:
    9. continue
    10. print('当前变量值 :', var)
    11. print("end!")

    pass 语句

    Python pass 是空语句,是为了保持程序结构的完整性。

    pass 不做任何事情,一般用做占位语句。

    Python 语言 pass 语句语法格式如下:

    pass

    python3.x

    1. def function():
    2. # 在Python3.x的时候pass可以写或不写
    3. pass

    ⛳️ 3.常见的数据结构

    序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

    Python有6个序列的内置类型,但最常见的是列表和元组。

    序列都可以进行的操作包括索引,切片,加,乘,检查成员。

    此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

    可变和不可变:

    不可变:字符串,数字或元组。

    list列表:[ ]

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

    列表的数据项不需要具有相同的类型

    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

    1. list1 = ['physics', 'chemistry', 1997, 2000]
    2. list2 = [1, 2, 3, 4, 5 ]
    3. list3 = ["a", "b", "c", "d"]

    1. l = [1, 2, 3]
    2. print(type(l)) #
    3. print(l) # [1, 2, 3]

    增:

    1. l.append(4)
    2. l.append("s")
    3. print(l) # [1, 2, 3, 4, 's']

    删:

    1. # 删除操作
    2. # del l[3]
    3. print(l)  # [1, 2, 3, 's']
    4. print(len(l))  # 4

    查询:

    1. print(l[0]) # 1
    2. print(l[-1]) # s 最后一个
    3. print(l.index(2)) # 1
    4. print(l[1:4])
    5. 查询索引13的元素

    在指定位置添加

    1. l.insert(4, "pp") # [1, 2, 3, 4, 'pp', 's']
    2. print(l)

    弹出:

    1. # 弹出
    2. print(l) # [1, 2, 3, 4, 's']
    3. pop = l.pop(0)
    4. print(pop) # 1
    5. print(l) # [2, 3, 4, 's']

    元组的转换:

    list(seq)
    将元组转换为列表

    常见的函数

    1. # 列表脚本操作符
    2. """
    3. 列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
    4. 如下所示:
    5. """
    6. list1 = [1, 2, 3]
    7. list2 = [3, 4, 5, 3]
    8. print(list1 + list2) # [1, 2, 3, 3, 4, 5, 3]
    9. print(list1 * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
    10. print(3 in list1) # True
    11. print(len(list1)) # 3
    12. print(max(list1)) #3
    13. print(list2.count(3)) #2
    list.extend(seq)
    在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    list.remove(obj)
    移除列表中某个值的第一个匹配项
    list.reverse()
    反向列表中元素
    list.sort(cmp=None, key=None, reverse=False)
    对原列表进行排序

    dict字典 map:

    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

    d = {key1 : 1, key2 : 2,key3:3 }

    1. d = {1: 1, 2: 2}
    2. print(d) # {1: 1, 2: 2}
    3. print(type(d)) #

    添加:

    如果添加的元素key存在了,这里的添加操作就是更新

    1. d.update({3: 3})
    2. print(d) # {1: 1, 2: 2, 3: 3}

    删除 

    1. tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    2. tinydict['Age'] = 8 # 更新 Age
    3. tinydict['School'] = "菜鸟教程" # 添加信息
    4. print ("tinydict['Age']: ", tinydict['Age'])
    5. print ("tinydict['School']: ", tinydict['School'])

     Traceback (most recent call last):
      File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd.py", line 1483, in _exec
        pydev_imports.execfile(file, globals, locals)  # execute the script
      File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
        exec(compile(contents+"\n", file, 'exec'), glob, loc)
      File "/usr/local/software/work/pycharmProjects/python-project/chapter7/dict.py", line 30, in
        print("tinydict['Age']: ", tinydict['Age'])
    NameError: name 'tinydict' is not defined

    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    字典键的特性

    字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

    两个重要的点需要记住:

    • 1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
    • 2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:
    1. tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
    2. print ("tinydict['Name']: ", tinydict['Name'])
    tinydict['Name']:  小菜鸟

    1. tinydict = {['Name']: 'Runoob', 'Age': 7}
    2. print ("tinydict['Name']: ", tinydict['Name'])
    Traceback (most recent call last):
      File "test.py", line 3, in 
        tinydict = {['Name']: 'Runoob', 'Age': 7}
    TypeError: unhashable type: 'list'

    这里的列表由于是可变的,所以就报错了

    内置函数

    序号函数及描述实例
    1len(dict)
    计算字典元素个数,即键的总数。
    >>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> len(tinydict)
    3
    2str(dict)
    输出字典,可以打印的字符串表示。
    >>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> str(tinydict)
    "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
    3type(variable)
    返回输入的变量类型,如果变量是字典就返回字典类型。
    >>> tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> type(tinydict)
    

    内置方法

    序号函数及描述
    1dict.clear()
    删除字典内所有元素
    2dict.copy()
    返回一个字典的浅复制
    3dict.fromkeys()
    创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    4dict.get(key, default=None)
    返回指定键的值,如果键不在字典中返回 default 设置的默认值
    5key in dict
    如果键在字典dict里返回true,否则返回false
    6dict.items()
    以列表返回一个视图对象
    7dict.keys()
    返回一个视图对象
    8dict.setdefault(key, default=None)
    和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    9dict.update(dict2)
    把字典dict2的键/值对更新到dict里
    10dict.values()
    返回一个视图对象
    11pop(key[,default])
    删除字典 key(键)所对应的值,返回被删除的值。
    12popitem()
    返回并删除字典中的最后一对键和值。

    set集合:

    集合(set)是一个无序的不重复元素序列。

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

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

    创建格式:

    1. parame = {value01,value02,...}
    2. 或者
    3. set(value)
    1. basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
    2. print(basket)

     # 这里演示的是去重功能
    {'orange', 'banana', 'pear', 'apple'}

    判断是否存在

    'orange' in basket  #True

    两个集合间的运算

    1. a = set('abracadabra')
    2. b = set('alacazam')

    >>> a                                  
    {'a', 'r', 'b', 'c', 'd'}
    >>> a - b                              # 集合a中包含而集合b中不包含的元素
    {'r', 'd', 'b'}
    >>> a | b                              # 集合a或b中包含的所有元素
    {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
    >>> a & b                              # 集合a和b中都包含了的元素
    {'a', 'c'}
    >>> a ^ b                              # 不同时包含于a和b的元素
    {'r', 'd', 'b', 'm', 'z', 'l'}

    类似列表推导式,同样集合支持集合推导式(Set comprehension):

    1. >>> a = {x for x in 'abracadabra' if x not in 'abc'}
    2. >>> a
    3. {'r', 'd'}

    基本操作:

    添加:

    1. >>> thisset = set(("Google", "Runoob", "Taobao"))
    2. >>> thisset.add("Facebook")
    3. >>> print(thisset)
    4. {'Taobao', 'Facebook', 'Google', 'Runoob'}

    通过update方法也能够添加元素,且参数可以是列表,元组,字典等,语法格式如下:

    s.update( x )

    x 可以有多个,用逗号分开。 

    1. >>> thisset = set(("Google", "Runoob", "Taobao"))
    2. >>> thisset.update({1,3})
    3. >>> print(thisset)
    4. {1, 3, 'Google', 'Taobao', 'Runoob'}
    5. >>> thisset.update([1,4],[5,6])
    6. >>> print(thisset)
    7. {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
    8. >>>

    移除:

    s.remove( x )

    将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

    1. >>> thisset = set(("Google", "Runoob", "Taobao"))
    2. >>> thisset.remove("Taobao")
    3. >>> print(thisset)
    4. {'Google', 'Runoob'}
    5. >>> thisset.remove("Facebook") # 不存在会发生错误
    6. Traceback (most recent call last):
    7. File "", line 1, in
    8. KeyError: 'Facebook'
    9. >>>

    此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:

    1. >>> thisset = set(("Google", "Runoob", "Taobao"))
    2. >>> thisset.discard("Facebook") # 不存在不会发生错误
    3. >>> print(thisset)
    4. {'Taobao', 'Google', 'Runoob'}

    所以推荐使用后面的方法删除某个元素

    我们也可以设置随机删除集合中的一个元素,语法格式如下:

    s.pop() 
    1. thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
    2. x = thisset.pop()
    3. print(x)

    set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

    计算个数:

    len(s)
    1. >>> thisset = set(("Google", "Runoob", "Taobao"))
    2. >>> len(thisset)
    3. 3

     清空:

    s.clear()

    清空集合

    1. >>> thisset = set(("Google", "Runoob", "Taobao"))
    2. >>> thisset.clear()
    3. >>> print(thisset)
    4. set()

    判断是否存在:

    x in s

    判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

    1. >>> thisset = set(("Google", "Runoob", "Taobao"))
    2. >>> "Runoob" in thisset
    3. True
    4. >>> "Facebook" in thisset
    5. False
    6. >>>

    内置方法总结:

    方法描述
    add()为集合添加元素
    clear()移除集合中的所有元素
    copy()拷贝一个集合
    difference()返回多个集合的差集
    difference_update()移除集合中的元素,该元素在指定的集合也存在。
    discard()删除集合中指定的元素
    intersection()返回集合的交集
    intersection_update()返回集合的交集。
    isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
    issubset()判断指定集合是否为该方法参数集合的子集。
    issuperset()判断该方法的参数集合是否为指定集合的子集
    pop()随机移除元素
    remove()移除指定元素
    symmetric_difference()返回两个集合中不重复的元素集合。
    symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
    union()返回两个集合的并集
    update()给集合添加元素

    tuple元组:( )

    Python 的元组与列表类似,不同之处在于元组的元素不能修改

    元组使用小括号,列表使用方括号。

    元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

    创建空元组:

    tup1 = ()

    元组中只包含一个元素时,需要在元素后面添加逗号

    tup1 = (50,)

    元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

    1. tup1 = ('physics', 'chemistry', 1997, 2000)
    2. tup2 = (1, 2, 3, 4, 5, 6, 7)

    查询:

    1. print ("tup1[0]: ", tup1[0]) #tup1[0]: physics
    2. print ("tup2[1:5]: ", tup2[1:5]) #tup2[1:5]: (2, 3, 4, 5)

    删除:

    元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

    1. tup = ('physics', 'chemistry', 1997, 2000)
    2. print(tup)
    3. del tup
    4. print("After deleting tup : ")
    5. print(tup)

    修改:

    元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

    1. # 以下修改元组元素操作是非法的。
    2. # tup1[0] = 100
    3. # 创建一个新的元组
    4. tup3 = tup1 + tup2
    5. print(tup3)

    结果:('physics', 'chemistry', 1997, 2000, 1, 2, 3, 4, 5, 6, 7)

    元组运算符

    与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

    Python 表达式结果描述
    len((1, 2, 3))3计算元素个数
    (1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)连接
    ('Hi!',) * 4('Hi!', 'Hi!', 'Hi!', 'Hi!')复制
    3 in (1, 2, 3)True元素是否存在
    for x in (1, 2, 3): print x,1 2 3迭代

    元组索引,截取

    因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:

    元组:

    L = ('spam', 'Spam', 'SPAM!')
    Python 表达式结果描述
    L[2]'SPAM!'读取第三个元素
    L[-2]'Spam'反向读取,读取倒数第二个元素
    L[1:]('Spam', 'SPAM!')截取元素

    无关闭分隔符

    任意无符号的对象,以逗号隔开,默认为元组,如下实例:

    1. print('abc', -4.24e93, 18 + 6.6j, 'xyz')
    2. x, y = 1, 2
    3. print("Value of x , y : ", x, y)

    结果:

    abc -4.24e+93 (18+6.6j) xyz
    Value of x , y :  1 2

    内置函数

    序号方法及描述
    1len(tuple)
    计算元组元素个数。
    2max(tuple)
    返回元组中元素最大值。
    3min(tuple)
    返回元组中元素最小值。
    4tuple(seq)
    将列表转换为元组。

    记忆:

    元组是圆形的,所以是用 ( )。

    列表是表是方的。所以是 [ ]

    set和dict都是 {  }

    好嘞到这里,我们就把python的特定以及发展历史和基本数据类型和基本的语句语法讲清楚了。后面将继续学习python的其他内容,我会第一时间更新文章。

    如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。

  • 相关阅读:
    《思科 - GNS3 - Pythonping》
    第1章 需求分析与ssm环境准备
    记一次MySQL5初始化被kill的问题排查 | 京东云技术团队
    目标5000万日活,Pwnk欲打造下一代年轻人的“迪士尼乐园”
    005.用哈希查找算法查找七色光颜色【哈希查找算法】
    TalkingData数据统计:洞察数字世界的关键工具
    【面试经典150 | 双指针】判断子序列
    el-tree实现菜单功能
    【Linux学习笔记】调试工具gdb
    Spring5应用之JDK动态代理
  • 原文地址:https://blog.csdn.net/qq_29235677/article/details/125967844