冒泡算法

方法一:

循环次数+一次循环比较的次数=列表长度len(L)-1

使用两层for循环,第一层循环控制循环次数,第二层循环控制比较次数,两次循环之间有关联

#!/usr/bin/env python# -*- coding:utf-8 -*-li = [99,22,11,6,3]for n in range(1,len(li)-1):  --->循环次数    for i in range(len(li)-n):   --->一次循环中比较次数        if li[i] > li[i+1]:            tmp = li[i]            li[i] = li[i+1]            li[i+1] = tmpprint li

方法二:

逻辑上分成两个列表,一个从第一个元素到倒数第二个元素,一个从第二个元素到最后一个元素

两个列表相同索引的两个元素比较,比较到最后也能排序成功

L = [88,33,99,66,22,33,77]L1 = [88,33,99,66,22,33] L2 = [33,99,66,22,33,77]
#!/usr/bin/env python
# -*- coding:utf-8 -*-L = [,,,,,,]m ((L)-):n (m+,(L)):L[m] > L[n]:tmp = L[m]L[m] = L[n]L[n] = tmp
L

排序在开发中用的很多,主要用在按照时间排序,按照字母排序等场合。

但是冒泡排序的效率不高,因为用到了两次for循环和若干次值的替换。

haproxy配置文件查询函数,将对应的backend后的内容取出

haproxy.txt配置文件:

frontend carrick.org

bind 0.0.0.0:80

option httplog

option httpclose

option forwardfor

log global

acl www hdr_reg(host) -i www.carrick.org

use_backend www.carrick.org if www

backend www.carrick.org

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000

server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000

# backend buy.carrick.org

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3001

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3001

backend buy.carrick.org

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3002

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3002

# backend buy.carrick.org

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3003

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3003

backend show carrick.org

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000

代码:

fetch.py

fetch(backend):flag = fetch_list = [](,) obj:line obj:line.strip().startswith(% backend):flag = flag :fetch_list.append(line.strip())flag line.strip().strip().strip().startswith():= (fetch_list)
result = fetch()
result

运行结果:

['server 100.1.7.9 100.1.7.9 weight 20 maxconn 3002', 'server 100.1.7.9 100.1.7.9 weight 20 maxconn 3002']

分析:

  1. ×××部分的line.strip()是为了去掉backend最后一行的空行

  2. ×××部分的not line.strip().startswith("#")是为了不将第二个# backend的内容追加进来

如果第二个if和第三个if换顺序,就不需要加×××部分的not line.strip().startswith("#"),因为这样会在插入第二个# backend之前将整个循环结束掉

3. 学会使用单if语句,学会使用flag加标志位,学会使用continue跳出本次for循环,也就是跳到了下一行,学会使用break跳出整个for循环

4. strip()可以去掉行结尾的空格,可以去掉空行,也可以去掉回车\n,如果写成strip('#'),也可以去掉开头的#,但是无法去掉开头的空格,也无法去掉两个字符串中间的空格

5. flag是为了判断行是否可以取到fetch_list列表中

haproxy配置文件添加函数,添加配置文件

流程图:

代码:

注意:

python必须先定义函数,然后在调用函数。如果调用函数在定义函数之前,就会报错。

JAVA和C#可以先调用函数,再定义函数

简化的if else ==>三元运算

简化的函数定义 ==> lambda表达式

def func(arg):

return arg + 1

等价于

func = lambda arg: arg + 1

func1(arg):arg + result = func1()
resultfunc2 = a : a + result = func2()
result

执行结果:

101

1001

lambda函数只用于处理简单的函数,会自动执行return

lambda表达式也可以接动态参数

func3 = lambda a,**kwargs : xxx

map函数

用于对序列(元组,列表)统一进行操作

两个参数的情况:

li = [33,55,77]
def func(a):
    return a + 10
new_li = map(func,li)
print new_li

执行结果:

[43, 65, 87]

多个参数的情况:

li1 = [33,55,77]
li2 = [4,5,6]
def func(a1,a2):
    return a1 + a2
new_li = map(func,li1,li2)
print new_li

执行结果:

[37, 60, 83]

列表个数不一致的情况:

li1 = [33,55,77]
li2 = [4,5,6]
li3 = [1,2]
def func(a1,a2,a3):
    ifnot a3:   --->a3默认为none,在函数体内给a3做个判断,如果a3为none,给a3复制为123,这样就可以不报错的执行了
        a3 = 123
    return a1 +a2 + a3
new_li = map(func,li1,li2,li3)
print new_li

执行结果:

[38, 62, 206]

用lambda表达式的写法:

li1 = [33,55,77]
li2 = [4,5,6]
li3 = [1,2,3]
def func(a1,a2,a3):
    return a1 +a2 + a3
print map(lambda a1,a2,a3:a1 + a2 + a3,li1,li2,li3)

执行结果:

[38, 62, 86]

filter函数

filter函数会对序列(元组,列表)进行处理,只有返回值为True的才会放到新列表中

filter(None,)  --->只过滤出bool值为真的元素

代码:

li = [33,55,'','Carrick',0,False] --->空字符串,0,False的布尔值都为假,因此被过滤掉了
print filter(None,li)

执行结果:

[33, 55, 'Carrick']

filter(func,)  --->通过函数来判断哪些会被过滤掉

li = [33,55,44,'Carrick',0,False]
print filter(lambda a:a > 33,li)

执行结果:

[55, 44, 'Carrick']

返回值为真的,才会被过滤出来。44,55都大于33,因此返回值为真,非空字符串Carrick也大于33,因此都被过滤出来

相当于如下的代码:

li = [33,44,55,'Carrick',0,False]
def func(a):
    if a >33:
        return a
result = filter(func,li)
print result

执行结果:

[55, 44, 'Carrick']

转载于:https://blog.51cto.com/9380121/1950638

python笔记day4相关推荐

  1. Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数

    一.函数对象 正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松 ...

  2. tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)

    1 主体框架还是那个主体框架 window = tk.Tk() window.title('my window') window.geometry('500x500') 2 设置tkinter的文字变 ...

  3. tkinter 笔记:列表部件 listbox (莫烦python 笔记)

    1  主体框架 主体框架部分还是 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geo ...

  4. python笔记: 生成器

    元素按照某种算法推算出来,我们在循环的过程中不断推算出后续的元素 不必创建完整的list,从而节省了大量的空间 这种一边循环一遍计算的机制,称之为生成器generator 1 列表生成器 把列表生成式 ...

  5. python输出字体的大小_Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格

    Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格 Python 需要创建和读取excel表里面的数据,需要用 openpyxl 这个包,今天安装好备用. 首先,进入C命令窗口 ...

  6. c++ 冒泡排序_干货|python笔记1-冒泡排序

    面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信可以难倒一批的同学,本篇就详细讲解如何用python进行冒泡排序. 基本原理 01概念: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻 ...

  7. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...

  8. python慕课笔记_MOOC python笔记(三) 序列容器:字符串、列表、元组

    Python Python开发 Python语言 MOOC python笔记(三) 序列容器:字符串.列表.元组 容器概念 容器是Python中的重要概念,分为有序与无序. 有序容器也称为序列类型容器 ...

  9. python笔记之Cmd模块

    python笔记之Cmd模块 Cmd类型提供了一个创建命令行解析器的框架,默认情况下,它使用readline来进行交互式操作.命令行编辑和命令完成.使用cmd创建的命令行解释器循环读取输入的所有行并且 ...

最新文章

  1. MyEclipse10安装SVN插件
  2. Silverlight撤消重做功能的实现。
  3. 如何阅读学术论文、聆听学术报告 —— 叶志明
  4. Helm V3 新版本发布
  5. 被VS Code牢牢圈粉了!
  6. 设计模式——4.抽象工厂模式
  7. Chrome firefox ie等浏览器空格(nbsp;)兼容问题
  8. 采样频率和带宽的关系_等效时间采样示波器和实时示波器的差别?
  9. sklearn 随机森林代码示例
  10. 中国计算机学会推荐国际学术会议和期刊目录(2019,最新)
  11. 看完阿里p8整理的Spring Security应用到源码手册,豁然开朗
  12. 前端js实现从视频中提取图片帧
  13. 颜色搭配、前端素材模板、JS、MUI、java、微信小程序相关地址
  14. 【NLP】文档集数据处理 gensim corpora.Dictionary 的简单使用
  15. 2022年湖南省临床执业医师考试第三单元综合实践(二)
  16. 麻将AI 不完全信息博弈学习笔记(完结)
  17. 浅谈DelayQueue
  18. 完美解决 Could not detect Mac OS X Version from sw_vers output: '10.12.3
  19. Springboot: Tomcat很好我选Undertow
  20. 电网电压突减matlab,突加负载时感应电动机动态过程的仿真.pdf

热门文章

  1. matlab图像处理命令(一)
  2. 【Qt】设置窗口透明度
  3. php五只猴子分椰子_tubes五只雪茄_phillies雪茄五只装
  4. 查看正在执行的事务_看懂sql_trace--分析执行计划及CBO行为
  5. sklearn 套件的主要内容_sklearn-roc_curve
  6. linux下c语言写文件,Linux下C语言之文件操作
  7. python逐个读取文件并处理_逐个读取多个文件并用python进行处理
  8. AttributeError: Cant get attribute SPPF on module models
  9. npm全局环境变量配置,全局配置cnpm
  10. ant PageHeaderWrapper 返回上一页