1. 程式人生 > >python筆記day4

python筆記day4

python

冒泡算法

方法一:

循環次數+一次循環比較的次數=列表長度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] = tmp
print 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()
result

func2 = 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‘]




















python筆記day4