美文网首页
循环嵌套与算法

循环嵌套与算法

作者: 码上版码 | 来源:发表于2020-10-05 22:11 被阅读0次

    本节大纲

    循环嵌套

    列表生成式

    排序算法

    循环嵌套

    boys = ['mike' , 'jack', 'tom']
    girls = ['Lisa' , 'limed', 'Mary']
    # 处理所有的可能性组合
    # 用debug查看一下这个过程
    for boy in boys:
        for girl in girls:
            print('%s shakes %s' % (boy,girl))
    """
    嵌套循环执行顺序
    先从外层循环里面取一个原素,再执行内层里的元素
    当内层的循环都执行完后,再继续执行外层循环
    """
    

    列表生成式

    '''
    员工税前工资列表
    [10000, 15000, 8000, 4000, 6000]
    每个员工扣税10%
    请计算出所有员工的税后工资,存在列表中
    '''
    pre_tax = [10000, 15000, 8000, 4000, 6000]  # 税前工资列表
    after_tax = []  # 税后工资列表
    for one in pre_tax:  # 遍历税前工资
        after_tax.append(one*(1-0.1))  # 将税后工资存储在列表中
    print(after_tax)  # 打印税后工资
    
    # 列表生成式代码表达:
    # 优势:简洁,一般适合简单的for循环;劣势:如果逻辑复杂,不好扩展
    after_tax = [one*(1-0.1) for one in pre_tax]  # 计算税后工资
    print(after_tax)  # 打印税后工资
    
    

    排序算法

    alist = [9,0,2,5,8]
    alist.sort(reverse=False)  # sort(reverse=True)降序;sort(reverse=False)升序
    print(alist)
    print(alist[::-1])  # 通过切片倒叙
    print(alist.reverse())  # 翻转
    
    alist = [9,0,5,2]
    '''
    要点:
        1- 找n-1次较大值
        2- 每一次较大值如何找
            相邻元素对比,大的向后移,这个过程执行n-1次
        3- 实现过程:
            第1个较大值:9
            [9,0,5,2] 9与0比,9大,交换位置[0,9,5,2]
            [0,9,5,2] 9与5比,9大,交换位置[0,5,9,2]
            [0,5,9,2] 9与2比,9大,交换位置[0,5,2,9]
            第2个较大值:5
            [0,5,2,9] 0与5比,5大,不交换位置[0,5,2,9]
            [0,5,2,9] 5与2比,5大,交换位置[0,2,5,9]
            第3个较大值:2
            [0,5,2,9] 0与2比,2大,不交换位置[0,2,5,9]
    '''
    # 1- 找len-1次较大值
    for one in range(0,len(alist)-1):  # (0,4-1) 0,1,2 3个较大值
        # 2- 每一次较大值怎么去实现,相邻元素对比
        for j in range(0,len(alist)-1-one):
            # 第1次较大值9 one==0,j==(0,4-1-0)  0,1,2  3个
            # 第2次较大值5 one==1,j==(0,4-1-1)  0,1   2个
            # 第3次较大值2 one==2,j==(0,4-1-2)  0    2个
            # 是否要交换位置
            # 如果前者大于后者
            if alist[j] > alist[j+1]:
                # 交换位置--临时变量法
                alist[j],alist[j+1] = alist[j+1],alist[j]
    print(alist)
    
    # 另一种排序算法
    '''
    [3,5,7,2]
    创建一个新的列表newList
    先找出所有元素中最小的,append在newList里面
    再找出剩余的所有元素中最小的,append在newList里面
    依此类推,直到所有的元素都放到newList里面
    '''
    def sort(oldList):
        newList = []
        while len(oldList) > 0:
            theMin = oldList[0]  # 记录当前循环最小元素
            minIdx = 0  # 记录当前最小元素的下标
            idx = 0  # 指向当前元素下标
            for one in oldList:
                if theMin > one:
                    theMin = one
                    minIdx = idx
                idx += 1
            oldList.pop(minIdx)
            newList.append(theMin)
        return newList
    print(sort([1,3,5,7,34,23,55,56,2,3,4]))
    
    

    相关文章

      网友评论

          本文标题:循环嵌套与算法

          本文链接:https://www.haomeiwen.com/subject/gefzuktx.html