Python函式的氣泡排序 遞迴以及裝飾器

2022-08-21 19:57:13 字數 2715 閱讀 8991

本質是,讓元素換位置,逐個比較最終排序。

例1:實現a1,a2值互換:

a1 = 123

a2 = 456

temp = a1

a1 = a2

a2 = temp

print(a1)

print(a2)

結果:456

123

氣泡排序:

#!/bin/bash/env python

# -*- coding:utf-8 -*-

li = [22,1,5,4,3,66,22,12,34,21]

for j in range(1,len(li)):

for i in range(len(li)-1):

if li[i] > li[i+1]:

temp = li[i]

li[i] = li[i+1]

li[i+1] = temp

print(li)

結果:[1, 3, 4, 5, 12, 21, 22, 22, 34, 66]

在函式內部可以呼叫其他函式。如果乙個函式在內部呼叫自己,這個函式就是遞迴函式。

例:

#!/bin/bash/env python

def f4(a1,a2):

if a1 > 10000:

return

print(a1)

a3 = a1 + a2

f4(a2,a3)

f4(0,1)

結果:011

2358

1321

3455

89144

233377

610987

1597

2584

4181

6765

裝飾器的目的:當要修改一段**時,而不進行內部的修改,這就需要在外部加裝飾器來達到效果。

原函式執行之前進行的操作:

#!/bin/bash/env python

def outer(func):

def inner():

print('hello')

print('let is')

print('moumou')

r = func()

return r

return inner

@outer

def func1():

print('yes')

func1()

結果:hello

let is

moumou

yes

函式執行之後進行操作:

def outer(func):

def inner():

r = func()

print('hello')

print('let is')

print('moumou')

return r

return inner

@outer

def func1():

print('yes')

func1()

結果:yes

hello

let is

moumou

@的功能:先執行outer函式,然後把發f1當做引數傳給oute。, 將outer的返回值重新賦值給f1,所以f1的函式就等於inner()

只要函式應用裝飾器,那麼函式就被重新定義,重新定義為:裝飾器的內層函式。

多個引數裝飾器傳遞:

#!/bin/bash/env python

def outer(func):

def inner(*args,**kwargs):

print(args)

print(kwargs)

ret = func(*args,**kwargs)

return ret

return inner

@outer

def func1(a1,a2,a3):

print("yes")

return a1 + a2 +a3

func1(11,22,33)

結果:(11, 22, 33)

{}yes

多個裝飾器的應用:

#!/bin/bash/env python

def outer(func):

def inner(*args,**kwargs):

print('cai')

ret = func(*args,**kwargs)

print('rui')

return ret

return inner

def outer1(func):

def inner1(*args,**kwargs):

print('123')

ret = func(*args,**kwargs)

return ret

return inner1

@outer1

@outer

def func1(a1,a2,a3):

print("yes")

func1(11,22,33)

結果:123

caiyes

rui

分析:

先把outer和func1看做乙個整體,把inner放在outer1中執行,然後再執行下面的

遞迴函式,氣泡排序

def func print 我是誰 func func 在python中,遞迴的深度最大到998 def foo n print n n 1foo n foo 1 遞迴的應用 我們可以使用遞迴來遍歷各種樹形結構,比如我們的資料夾系統.可以使用遞迴來遍歷該資料夾中的所有檔案 遍歷 d 作業 資料夾,...

氣泡排序的思想 python 氣泡排序 遞迴排序

氣泡排序的思想 每次比較兩個相鄰的元素,如果他們的順序錯誤就把他們交換位置 比如有五個數 12,35,99,18,76,從大到小排序,對相鄰的兩位進行比較 經過第一趟比較後,五個數中最小的數已經在最後面了,接下來只比較前四個數,依次類推 氣泡排序原理 每一趟只能將乙個數歸位,如果有n個數進行排序,只...

氣泡排序,,,,遞迴

第一種 這種方法氣泡排序 比較相鄰的兩個元素,如果前乙個比後乙個大,則交換位置。第一輪把最大的元素放到了最後面。由於每次排序最後乙個都是最大的,所以之後按照步驟1排序最後乙個元素不用比 function arr sort data arr sort arr 第二種方法時對氣泡排序的改進 宣告乙個變數...