Python笔记(二)

##第三章
3-1逻辑结构与控制 if/else/elif
if控制语句:
组成:关键字if、逻辑表达式、逻辑代码
逻辑表达式的结果为:True/False
True:不为空或者0的变量(数组、序列、字典)
False:0、False、None、空的变量(序列、字典)

if(逻辑表达式):
    代码

特殊的: 表达式                          if语句
         函数    def test():            if(bool((test()-1)):
                     return False        print("Test return Flase")
else语句:
    和if语句搭配使用,if和else是一对一的关系。当if(Flase)的时候执行else。
if(else):
    do_yes
else:
    do_no


elif语句:
    检查多个表达式是否为真,并且有对应的代码。
    if(表达式1):
        true1_语句
    elif(表达式2):
        true2_语句
    elif(表达式3):
        true3_语句
    else:
        Flase1_语句

elif和if的嵌套:
    if嵌套是指if中含有if

        if(表达式1):
            if(表达式2):
                true_2语句
        else:
            expr1_false_suite

3-2逻辑控制—While语句
while循环语句:
代码块中会一直执行,知道条件不满足了,结束语句。
while循环语句分为:有限循环和无限循环
while循环语句语法:
while expression:
do_same_task

while和else语句:
    只有当while循环正常执行完时才会执行else语句
        while和else的配合使用
        i = 0
        while(i < 10):
            print(i)
            i += 1
        else:
            print("when i = %d,over" % i)

break语句:
    结束当前的循环,跳到下一个语句
    i = 0                        输出结果
    when(i < 10):                    0
        print(i)                    1
        i += 1                        2
        if(i == 5):                    3
            break                     4
    print("exec over i = %d" % i)    exec over i = 5

continue和pass:
    continue语句:
        结束当前的循环,忽略后面的语句,跳转到循环开始位置,然后根据表达式结果再决定是否循环

    i = 0                         输出结果
    while(i < 10):                    2
        i += 2                        4
        if(i % 2 != 0):                6
            continue                   8
        print(i)

    pass语句:
        空语句,不做任何操作
        作用:保持代码完整性,站位符或者创建站位程序
              一些异常处理,不采取任何措施。

3-3逻辑控制—for语句
for语句:
用来访问一个可迭代对象中的所有元素。并再遍历所有条目以后结束循环。
for语句语法:
for iter_val in iterable:
iter_val_del
循环索引依次从iterable取值,每循环一次就执行一次iter_val_del

序列:colors = ["green","red","yellow","blue","black"]
    使用序列项迭代:
        for color in colors:
            print(color)
    使用索引进行迭代:
        for index in range(len(colors)):
            print(colors[index])
    使用序列和索引进行迭代:
        for index, color in enumerate(colors):
            print(index,color)

遍历字典: dict1 = dict.fromkeys((1,2,3,4,5))
    for key in dict1:
        print(key,dict1[key])

访问迭代器:
    for循环访问迭代器的时候,调用next()方法得到一个条目,然后赋值给目标变量,当访问完后,会产生一个异常。
    for语句在内部会截取这个异常。
        for item in dict1.iteritems():
            print item
range方法:生成一个整数的list
    range(start = 0,stop,step = 1)其中step必须大于0

else语句也是当for语句正常执行完以后,才会触发else语句的内容。
for和else:
    for i in range(10):
        print(i)
    else:
        print("over i = %d" % i)

迭代器:
    迭代器是一个访问集合内元素的一种方式。迭代器对象从集合的第一个元素开始访问,
    知道所有的元素都被访问一遍以后结束。

    迭代器不能回退,只能往前进行迭代。

    优点:不要求你事先准备好整个迭代过程中所有的元素。
          提供统一访问集合的接口。
          迭代非序列集合(文件)
    迭代器迭代实质:
        迭代器有一个next()方法的对象,当循环访问迭代器的每个元素时,
        调用的是迭代器next()方法,当全部元素取出后,会引发一个StopIteration异常,告诉调用者,迭代完成。

    迭代器使用:
        myiter = iter("HellWord")
        while(True):
            print(myiter.next())
    判断对象是否可迭代:
        from collections import Iterable
        isinstance(obj,Iterable)
    单迭代对象:
        只要对象定的话,无论你是否再调用iter()对象,甚至是把这个对象赋值给其他变量名,
        你会发现这些变量指的是同一个地方
        map是单迭代对象
        m1 = range(10);m2 = map(abs,m1);m3 = iter(m2)
        next(m2)出不来,不知道是不是map的原因 map(函数,一个或多个序列)
        next(m3)

    for循环语句的实质:
        for in range(10):
            print(i)
        for循环语句会自动调用工厂函数iter()获得迭代器,然后调用next()方法,并且处理异常。

3-4逻辑控制—列表解析和生成器
列表解析:动态创建列表,在一个序列的值上应用一个任意表达式,把结果收集到一个新的列表中并返回。

基本语法:[expr for iter_var in iterable]
    mylist = [x+1 for in range(10)]
    [1,2,3,4,5,6,7,8,9,10]

扩展与法:[exper for iter_var in iterable if cond_expr]
mylist = [x+1 for x in range(10) if(x > 5)]
[7,8,9,10]

生成一个矩阵:
    myrange = [(x, y, z) for x in range(3) for y in range(3) for z in range(3) ] 

使用列表解析器统计枫树小于60的个数:
    [x for x in list1 if x < 60]
    把x满足条件的组成一个新的列表然后返回

将列表中小于60的分数替换为False
    [x >= 60 and x for x in list1]
    当x >= 60成立的时候返回X的值,作为列表成员
    当x >= 60不成立的时候返回Flase,作为列表的成员
给定一个字符串,得到每个字符串中单词及其对应的长度
    str = "welcome to python world"
    stuff = [[world,len(world)] ofr world in str1.split()]

生成器:
    表达式:它是列表解析器的一个阔转,分会一个生成器,生成器每次计算出一个条目,把这个条目产生出来。生成器使用延迟算法,他在内存上更为有效。

语法:
    (expr for iter in iterable if cond_expr)

创建:
    L1 = (val for val in range(10))

访问:L1.next()也可能是next(L1)

列表解析器和生成器表达式区别:
    列表解析器需要把所有条目创建出来。
    生成器表达式不需要把条目创建出来,每次计算的时候会把条目创建出来。

在这里需要提及到排序算法,排序算法这里就不作赘述:
以下为比较累排序:
    交换排序:冒泡排序、快速排序
    插入排序:简单插入排序、希尔排序
    选择排序:简单选择排序、堆排序
    归并排序:二路归并排序、多路归并排序

以下为非比较排序
    计数排序、桶排序、基数排序

##参考视频
奇猫的Python教学视频

作者 Luckyboy

Reward
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • © 2015-2020 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信