Python3經常使用函數、方法總結(持續更新…)

最近刷LeetCode,本身自娛自樂完以後去discussion看大佬們的各類巧妙解法,老是止不住的雙擊666……加上最近Python3用的比較多(雖然Python實在不推薦跑算法題目,一是運行效率過低,二是Pythonic模式感受是在做弊,只有在不考慮效率的狀況下使用Python實現非Pythonic的算法設計還能夠說的過去,且看成熟悉Python了),總結了一下經常使用的函數及方法,與你們分享也能夠本身溫故,與C++ STL仍是有不少重疊的。算法

函數

  • next() 函數express

    返回迭代器的下一個項目。
    next(iterator[, default])
    iterator -- 可迭代對象
    default -- 可選,用於設置在沒有下一個元素時返回該默認值,若是不設置,又沒有下一個元素則會觸發 StopIteration 異常。函數

#case 1
# 首先得到Iterator對象:
it = iter([1, 2, 3, 4, 5])
# 循環:
while True:
    try:
        # 得到下一個值:
        x = next(it)
        print(x)
    except StopIteration:
        # 遇到StopIteration就退出循環
        break
輸出:
1
2
3
4
5

#case 2
it = iter([1, 2, 3, 4, 5])
while True:
    x = next(it, 'a')
    print(x)
    if x == 'a':
        break
輸出:
1
2
3
4
5
a
  • filter() 函數this

    用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
    該接收兩個參數,第一個爲函數,第二個爲序列,序列的每一個元素做爲參數傳遞給函數進行判,而後返回 True 或 False,最後將返回 True 的元素放到新列表中。設計

filter(function, iterable)
def is_odd(n):
    return n % 2 == 1 
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
輸出:[1, 3, 5, 7, 9]

a = list(filter(lambda x: x % 2 == 0, range(10)))
print(a)
輸出:[0, 2, 4, 6, 8]
  • zip()函數code

    用於將可迭代的對象做爲參數,將對象中對應的元素打包成一個個元組,而後返回由這些元組組成的列表。
    若是各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用 * 號操做符,能夠將元組解壓爲列表。對象

zip([iterable, ...])

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包爲元組的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素個數與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 與 zip 相反,*zipped 可理解爲解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]
  • any()函數索引

    any() 函數用於判斷給定的可迭代參數 iterable 是否所有爲 False,則返回 False,若是有一個爲 True,則返回 True。
    元素除了是 0、空、FALSE 外都算 TRUE。ip

any(iterable)

>>> any(['a', 'b', '', 'd'])   # 列表list,存在一個爲空的元素
True
>>> any([0, '', False])        # 列表list,元素全爲0,'',false
False
  • all()函數作用域

    all() 函數用於判斷給定的可迭代參數 iterable 中的全部元素是否都爲 TRUE,若是是返回 True,不然返回 False。
    元素除了是 0、空、None、False 外都算 True。

all(iterable)

>>> all(['a', 'b', 'c', 'd'])  # 列表list,元素都不爲空或0
True
>>> all(['a', 'b', '', 'd'])   # 列表list,存在一個爲空的元素
False
  • int()函數

    用於將一個字符串或數字轉換爲整型。
    class int(x, base=10)
    x -- 字符串或數字。
    base -- 進制數,默認十進制。

>>> int('12',16)        # 若是是帶參數base的話,12要以字符串的形式進行輸入,12 爲 16進制
18
>>> int('0xa',16)  
10  
>>> int('10',8)  
8
  • divmod()函數

    把除數和餘數運算結果結合起來,返回一個包含商和餘數的元組(a // b, a % b)。

divmod(a, b)

>>>divmod(7, 2)
(3, 1)
  • enumerate()函數

    用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,通常用在 for 循環當中。

enumerate(sequence, [start=0])

>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))       # 下標從 1 開始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
  • eval()函數

    用來執行一個字符串表達式,並返回表達式的值。
    eval(expression[, globals[, locals]])
    expression -- 表達式。
    globals -- 變量做用域,全局命名空間,若是被提供,則必須是一個字典對象。
    locals -- 變量做用域,局部命名空間,若是被提供,能夠是任何映射對象。

>>>x = 7
>>> eval( '3 * x' )
21

>>> a = "123"
>>> type(a)
<class 'str'>
>>> b = eval(a)
>>> b
123
>>> type(b)
<class 'int'>
  • reduce() 函數

    會對參數序列中元素進行累積。
    函數將一個數據集合(鏈表,元組等)中的全部數據進行下列操做:
    用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 一、2 個元素進行操做,獲得的結果再與第三個數據用 function 函數運算,最後獲得一個結果。

reduce(function, iterable[, initializer])

>>>def add(x, y) :            # 兩數相加
...     return x + y
... 
>>> reduce(add, [1,2,3,4,5])   # 計算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函數
15

方法

  • 字典get()方法

    返回指定鍵的值,若是值不在字典中返回默認值。
    dict.get(key, default=None)

dict = {'Name': 'Zara', 'Age': 27}
print "Value : %s" %  dict.get('Sex', "Never")
輸出:Value : Never
  • isalnum()方法

    檢測字符串是否由字母和數字組成。若是 string 至少有一個字符而且全部字符都是字母或數字則返回 True,不然返回 False。
    str.isalnum()

str = "this2009";  # 字符中沒有空格
print str.isalnum();
輸出:
True 

str = "this is string example....wow!!!";
print str.isalnum();
輸出:
False
  • strip()方法

    用於移除字符串頭尾指定的字符(默認爲空格或換行符)或字符序列。
    注意:該方法只能刪除開頭或是結尾的字符,不能刪除中間部分的字符。
    str.strip([chars])

str = "00000003210abc1230000000"; 
print(str.strip( '0' ))  # 去除首尾字符 0
輸出:
3210abc0123

str2 = "   abc      ";   # 去除首尾空格
print(str2.strip())
輸出:
abc
  • join()方法

    用於將序列中的元素以指定的字符鏈接生成一個新的字符串。
    str.join(sequence)

str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
輸出:
a-b-c
  • rjust()方法

    返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串。若是指定的長度小於字符串的長度則返回原字符串。
    str.rjust(width[, fillchar])

str = "this is string example....wow!!!";
print str.rjust(50, '0');
輸出:
000000000000000000this is string example....wow!!!

ljust()方法同理

位運算符

與(&)和或(|)運算符就不說了,主要來看看下面幾個位運算符:
a = 0011 1100
b = 0000 1101

^ 按位異或運算符:當兩對應的二進位相異時,結果爲1
(a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001

~ 按位取反運算符:對數據的每一個二進制位取反,即把1變爲0,把0變爲1 。~x 相似於 -x-1
(~a ) 輸出結果 -61 ,二進制解釋: 1100 0011,在一個有符號二進制數的補碼形式。

<< 左移動運算符:運算數的各二進位所有左移若干位,由 << 右邊的數字指定了移動的位數,高位丟棄,低位補0。
a << 2 輸出結果 240 ,二進制解釋: 1111 0000

>> 右移動運算符:把">>"左邊的運算數的各二進位所有右移若干位,>> 右邊的數字指定了移動的位數 a >> 2 輸出結果 15 ,二進制解釋: 0000 1111

相關文章
相關標籤/搜索