收藏整理的一些Python常用方法和技巧

來源:互聯網
上載者:User
1. 逆轉字串的三種方法
1.1. 類比C++中方法, 定義一個Null 字元串來實現
通過設定一個Null 字元串, 然後講參數中的字串從後往前遍曆, 使用字串的加法合并為新的字串
複製代碼 代碼如下:


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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.