05_Python简单教程(二)

五、运算符

(一)算术运算符

图1

(二)比较运算符

图2

(三)赋值运算符

图3

(四)位运算符

图4

(五)逻辑运算符

图5

(六)成员运算符

图6

(七)身份运算符

图7

(八)Python运算符优先级

图8

六、字符串

(一)字符串创建

            s = 'abcd'

            s = "abcd"

            s = """abcdefg""

(二)字符串访问

        a = s[0]         # 访问弟 0 个元素

        l = len(s)         # 字符串的长度

(三)字符串运算

图9

(四)Python字符串格式化

        Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

图10

(五)内建函数

图11

七、列表

(一)列表创建

        list = [1,2,3,4,5,'atguigu']

        [x+1 for x in range(10)]          或         [x+1 for x in (1,1,2,3)]

(二)列表值获取

        l = list[0]

        l1 = list2[1:5]

        len(list)             #长度查看

(三)列表更新

        list[0] = 'agg'

(四)删除列表元素

        del list[0]

(五)其他列表操作

图12

(六)列表嵌套

            使用嵌套列表即在列表里创建其它列表,例如:

                    a = ['a', 'b', 'c']

                    n = [1, 2, 3]

                    x = [a, n]

                    # x = [['a', 'b', 'c'], [1, 2, 3]]

                    # x[0] = ['a', 'b', 'c']

                    # x[0][1] = 'b'

(七)Python列表函数&方法

图13

八、元祖

(一)元祖创建

        tup1 = ('Google', 'atguigu', 1997, 2000);

        tup2 = (1, 2, 3, 4, 5 );

        tup3 = "a", "b", "c", "d";                             # 不需要括号也可以

(二)元组值获取

        tup1[1]

        tup1[1:5]

(三)元祖更新

        元组不允许更新

(四)删除元祖元素

        del tup[0]

(五)元祖运算符

图14

(六)元祖内置函数

图14

九、字典

        在字典中,键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

(一)字典创建

        dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

        dict = {x:x+1 for x in range(10)}

(二)字典值获取

        dict['Alice']

(三)更新字典

        dict['Alice'] = 10

(四)删除字典元素

        del dict['Alice']

        del dict

(五)字典内置函数&方法

 函数         描述                                                  实例

len(dict)    计算字典元素个数,即键的总数。    dict = {'Name':'Runoob', 'Age': 7, 'Class': 'First'}

                                                                            len(dict)

str(dict)     输出字典,以可打印的字符串表示。  dict = {'Name':'Runoob', 'Age': 7, 'Class':                                                                             'First'}                           

                                                                            str(dict) 

                                                                            "{'Name': 'Runoob','Class': 'First', 'Age': 7}"

type(variable)  返回输入的变量类型                  dict = {'Name':'Runoob', 'Age': 7, 'Class': 'First'}

                                                                          type(dict)

                                                                          <class 'dict'>

radiansdict.clear() :删除字典内所有元素。

radiansdict.copy():返回一个字典的浅复制。

radiansdict.fromkeys():创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值。

radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回 default 值。

key in dict:如果键在字典 dict 里返回 true,否则返回 false。

radiansdict.items():以列表返回可遍历的(键, 值)元组数组。

radiansdict.keys():返回一个迭代器,可以使用 list()来转换为列表。

radiansdict.setdefault(key, default=None) :和 get()类似, 但如果键不存在于字典中,将会添加键并将值设为 default。

radiansdict.update(dict2) :把字典 dict2 的键/值对更新到 dict里。

radiansdict.values() :返回一个迭代器,可以使用 list() 来转换为列表。

pop(key[,default]) :删除字典给定键 key 所对应的值,返回值为被删除的值。key 值必须给出。 否则,返回 default 值。

popitem():  随机返回并删除字典中的一对键和值(一般删除末尾对)。

扩展:

        1. 浅拷贝:只拷贝引用地址,未拷贝内容:

                    a = [1,2,3,4,5]

                    b = a

        2. 深拷贝:拷贝引用地址和内容:

                    a = [1,2,3,4,5]

                    import copy

                    b = copy.deepcopy(a)

            可以递归拷贝;一拷到底

注意:

    1、对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。

    2、对于可变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝。

    3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。

十、Set集合

    集合不支持切片操作。

(一)Set集合创建

        s = {'name','aa','bb'}

        s = set(序列)                 # dict 序列,值添加 key

        s = {x for x in range(10) if x not in range(5,10)}

(二)Set集合添加元素

        s.add(x) # 添加单个元素

        s.update(x) # 添加序列元素

(三)移除元素

        s.remove(x)         # 移除单个元素

        s.discard(x)         # 移除集合(不存在不报错)

        s.pop()             # 随机删除集合中的一个元素

(四)集合操作方法

图15

十一、条件判断

(一)基本语法

            if condition_1:

                statement_block_1

            elif condition_2:

                statement_block_2

            else:

                statement_block_3

(二)注意要点

        1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。

        2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。

        3、在 Python 中没有 switch – case 语句。

十二、循环语句

(一)while循环

        while bool:

            pass

        else:

            pass

(二)for循环

        for <variable> in <sequence>:

            <statements>

(三)range循环

        如果你需要遍历数字序列,可以使用内置 range()函数。它会生成数列:range(start,end,step)。

(四)break和continue语句及循环中的else字句

        (1) break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。

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

(五)pass语句

        Python pass 是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。

十三、迭代器和生成器

        迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。

(一)迭代器生成

        字符串,列表或元组对象都可用于创建迭代器

            list=[1,2,3,4]

            it = iter(list)                     # 创建迭代器对象

            print(next(it))                  # 输出迭代器的下一个元素

            print(next(it))

(二)迭代器遍历

            list=[1,2,3,4]

            it = iter(list)

        (1) for 循环

            for i in it:

                print(i)

        (2) while 循环

            import sys

            while True:

                try:

                    print(next(its))

                except StopIteration:

                    sys.exit()

(三)创建一个迭代器

        把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与__next__() 。

例如:

        class MyNumbers:

            def __iter__(self):

                self.a = 1

                return self

            def __next__(self):

                if self.a < 20:

                    x = self.a

                    self.a += 1

                    return x

                else:

                    raise StopIteration

             myclass = MyNumbers()

             myiter = iter(myclass)

             print(next(myiter))

             for x in myiter:

                print(x)

(四)生成器

    在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值, 并在下一次执行next()方法时从当前位置继续运行。

    调用一个生成器函数,返回的是一个迭代器对象。

        import sys

        def fibonacci(n):                 # 生成器函数 - 斐波那契

            a, b, counter = 0, 1, 0

            while True:

                if (counter > n):

                    return

                yield a

                a, b = b, a + b

                counter += 1

        f = fibonacci(10)         # f 是一个迭代器,由生成器返回生成

        while True:

            try:

                print (next(f), end=" ")

            except StopIteration:

                sys.exit()

十四、函数

(一)基本语法

        def 函数名(参数列表):

            函数体

(二)函数分类

    1. 有参数

        (1) 有几个参数,就得传入几个参数

        (2) 在函数调用中输入参数时,参数名称必须对应

            def aa(x):

                print(x)

            aa(x=5)

        (3) 当调用函数时,必须全部定义名称,且名称对应,顺序可以不同

            def aa(x,y):

                print(x)

            aa(y=2,x=5)

        (4) 函数中可以定义默认值

            def aa(x=30,y):

                print(x)

            aa(y=2,x=5)

        (5) 不定长度参数

            def aa(x,y,*args,**kwargs):

                print(x)

                print(args)             # 元组

                print(kwargs)          # 字典

            aa(1,2,3,4,5,6,7,a = 8,b=9)

    2. 有返回值

        (1) 单个返回值

            def aa(x):

                return x

            a = aa(10)

        (2) 多个返回值

            def aa(x):

                return x,10

            a = aa(10)          # a 是一个元组

            a,b = aa(10)         # 多个参数接收

(三)匿名函数

    基本语法:

        lambda [arg1 [,arg2,.....argn]]:expression

        sum = lambda arg1, arg2: arg1 + arg2

        # 调用 sum 函数

        print ("相加后的值为 : ", sum( 10, 20 ))

        print ("相加后的值为 : ", sum( 20, 20 ))

(四)变量作用域

图17

                x = int(2.9) # 内建作用域

                g_count = 0 # 全局作用域

                def outer():

                    o_count = 1 # 闭包函数外的函数中

                    def inner():

                        i_count = 2 # 局部作用域

                        o_count += 1

                    inner()

                outer()

(五)全局变量和局部变量

    定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

    total = 0                 # 这是一个全局变量

   # 可写函数说明

    def sum( arg1, arg2 ):

        #返回 2 个参数的和."

        total = arg1 + arg2                 # total 在这里是局部变量.

        print("函数内是局部变量 : ", total)

        return total

    #调用 sum 函数

    sum( 10, 20 )

    print ("函数外是全局变量 : ", total)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,730评论 0 8
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,889评论 0 3
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,719评论 0 10
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,546评论 1 118
  • 1. 那天在USA today 上看到一篇文章,大致讲述了一位父亲的故事。 从一开始抱着手里小小一团的女儿,好像前...
    drownAN阅读 514评论 0 10