首頁  >  文章  >  後端開發  >  Python常用方法和技巧總結

Python常用方法和技巧總結

伊谢尔伦
伊谢尔伦原創
2017-06-28 13:19:551393瀏覽

這篇文章主要介紹了收藏的一些Python常用方法和技巧,本文講解了逆轉字符串的三種方法、遍歷字典的四種方法、遍歷list的三種方法、字典排序的方法等Python常用技巧和方法,需要的朋友可以參考下

#1. 逆轉字串的三種方法
1.1 . 模擬C++中方法, 定義一個空字串來實現
透過設定一個空字串, 然後講參數中的字串從後往前遍歷, 使用字串的加法合併為新的字串

def reverse(text) :
    str = ''
    index = len(text) - 1
    while index >= 0 :
        str += text[index]
        index -= 1
    return str


1.2. 使用切片法
這個是Python中的一個特性, 切片可以取負值,這是採用切片的方法,設定步長為- 1,這樣就實現了反過來排序。

def reverse_1(text) :
    return text[::-1]

1.3. 使用列表

採用列表的reverse方法,先將text轉換為列表,然後透過reverse方法反轉,然後在透過join連接為字符串。

def reverse_2(text) :
    temp = list(text)
    temp.reverse()
    return ''.join(temp)

2. 使用reduce
使用匿名函數和reduce()

def reverse_3(text) :
    return reduce(lambda x, y : y + x, text)
print reverse_3("Hello")

3. 遍歷字典的四種方法

dict={"a":"apple","b":"banana","o":"orange"} 
 
print "##########dict######################" 
for i in dict: 
        print "dict[%s]=" % i,dict[i] 
 
print "###########items#####################" 
for (k,v) in  dict.items(): 
        print "dict[%s]=" % k,v 
 
print "###########iteritems#################" 
for k,v in dict.iteritems(): 
        print "dict[%s]=" % k,v 
 
print "###########iterkeys,itervalues#######" 
for k,v in zip(dict.iterkeys(),dict.itervalues()): 
        print "dict[%s]=" % k,v


4. 遍歷list的三種方法

for key in lst :
    print key
    
for i in range(len(lst)) :
    print lst[i]
for index, key in enumerate(lst) :
    print key    //index是list的索引


5.字典排序的方法
字典依照value的值從大到小的順序來排序(預設從小到排序)。

dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True)
print dict
//输出的结果:
[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]

下面我們分解下程式碼
print dic.iteritems() 得到[(鍵,值)]的列表。
接著用sorted方法,透過key這個參數,指定排序是依照value,也就是第一個元素d[1的值來排序。 reverse = True表示是需要翻轉的,預設是從小到大,翻轉的話,那就是從大到小。
對字典按鍵(key)排序:

dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict= sorted(dic.iteritems(), key=lambda d:d[0]) # d[0]表示字典的键
print dict
#sorted中第三个可选参数为reverse, True表示从大到小排序
#默认reverse = False

6.子類別與父類別
子類別建構子呼叫父類別的初始化構造函數

class A(object) :
    def init(self) :
        print  "testA
class B(A) :
    def init(self) :
        A.init(self)


子類別呼叫父類別的同名函數

super().fuleifunction()


#7. 更靈活的參數傳遞方式##

func2(a=1, b=2, c=3) #默认参数
func3(*args)         #接受任意数量的参数, 以tuple的方式传入
func4(**kargs)       #把参数以键值对字典的形式传入

在變數前加上星號前綴(*),呼叫時的參數會儲存在一個tuple()

物件中,賦值給形參。在函數內部,需要對參數進行處理時,只要對這個 tuple 類型的形參(這裡是 args)進行操作就可以了。因此,函數在定義時並不需要指明參數個數,就可以處理任意參數個數的情況。

def calcSum(*args):
    sum = 0
    for i in args:
        sum += i
        print sum
#调用:
calcSum(1,2,3)
calcSum(123,456)
calcSum()
#输出:
6
579
0
#################################
def printAll(**kargs):
    for k in kargs:
    print k, ':', kargs[k]
printAll(a=1, b=2, c=3)
printAll(x=4, y=5)
#输出:
a : 1
c : 3
b : 2
y : 5
x : 4

python的中參數可以多種形式進行組合, 在混合使用時,首先要注意函數的寫法,必須遵守:

1.帶有預設值的形參(arg =)須在無預設值的形參(arg)之後

2.元組參數(*args)須在帶有預設值的形參(arg=)之後
3.字典參數(** kargs)須在元組參數(*args)之後

在函數被呼叫時,參數的傳遞過程為:

1.依序把無指定參數的實參賦值給形參

2.把指定參數名稱(arg=v)的實參賦值給對應的形參
3.將多餘的無指定參數的實參打包成一個tuple 傳遞給元組參數(*args )
4.將多餘的指定參數名的實參打包成一個dict 傳遞給字典參數(**kargs)

8. lambda

表達式lambda 表達式式可以看做一種匿名函數
    lambda 表達式的語法格式:
    lambda 參數清單: 表達式   #參數清單周圍沒有括號,回傳值前沒有return 關鍵字,也沒有函數名稱

def fn(x):
    return lambda y: x + y
#调用
a = fn(2)
print a(3)
#输出
5

分析

: fn(2)呼叫後, 相當於a = lambda y: 2 + y, 然後a(3)被呼叫時.
相當於print lambda y: 2 + 3

以上是Python常用方法和技巧總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn