乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python 初學(xué)者必備的常用內(nèi)置函數(shù)

       雨潤心田品風(fēng)雨 2019-02-28

      本文綱要

      Python 作為一門高級編程語言,為我們提供了許多方便易用的內(nèi)置函數(shù),節(jié)省了不少開發(fā)應(yīng)用的時(shí)間。目前,Python 3.7 共有 69 個(gè)內(nèi)置函數(shù),一些是我們耳熟能詳?shù)暮瘮?shù),另一些卻不是很常見,這里主要介紹一些新手必備函數(shù)及其用法。

      Python 初學(xué)者必備的常用內(nèi)置函數(shù)

      為了便于說明,我把這些內(nèi)置函數(shù)粗略地分為六大類:

      1. 輸入輸出: print() open() input()
      2. 迭代相關(guān): enmuerate() zip()
      3. 序列屬性: sum() max() min() len()
      4. 操作序列: sorted() reversed() range()
      5. 對象屬性:dir() id() isinstance() type()
      6. 映射類型:eval() map() slice()

      輸入輸出

      print 函數(shù)將對象輸出至控制臺

      print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

      *objects 為可變參數(shù),可以接受任意多個(gè)對象。sep 參數(shù)表示輸出對象之

      間的分隔符,默認(rèn)為空格。

      >>> print('Python', '高效編程')Python 高效編程

      分隔符為'*':

      >>> print('Python', '高效編程', sep = '*')Python*高效編程

      格式化輸出字符串的三種方式:

      name = 'Python高效編程'fmt1 = f'公眾號:{name}'fmt2 = '公眾號:{}'.format(name)fmt3 = '公眾號:%s' %nameprint(fmt1)print(fmt2)print(fmt3)# 公眾號:Python高效編程

      open 函數(shù)打開文件并返回文件對象

      open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

      file 為文件地址,mode 為打開文件的模式,默認(rèn)為 'r',表示讀取文件,常用的還有:'w' 表示寫入文件、'b' 表示以二進(jìn)制形式打開。

      常用上下文管理器 with 打開文件,f.read( ) 讀取全部內(nèi)容,f.readline() 讀取一行內(nèi)容。

      with open('test.txt', 'r') as f: text1 = f.read()with open('test.txt', 'r') as f: text2 = '' line = f.readline() while line: text2 += line line = f.readline()assert text1 == text2print(text1)###############輸出內(nèi)容:Python 高效編程Python 高效編程Python 高效編程Python 高效編程###############

      有時(shí)候,我們讀取文件還會遇到亂碼問題,可以指定編碼格式:

      當(dāng)文件中有中文的時(shí)候,使用 'utf-8' 編碼會導(dǎo)致異常:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 7: invalid start byte

      with open('test.txt', 'r', encoding='utf-8') as f: text1 = f.read()

      這時(shí)候,我們可以嘗試 'gb2312' 或者 'gbk' 編碼來打開含有中文字符的文件。這時(shí),便可以成功打開文件。

      with open('test.txt', 'r',  encoding='gb2312') as f: text1 = f.read()with open('test.txt', 'w',  encoding='gbk') as f: f.write('Python高效編程')

      input 函數(shù)獲取控制臺輸入

      input([prompt])

      input 可接受字符串為參數(shù),提示用戶輸入。

      >>> s = input('請輸入公眾號名稱:')請輸入公眾號名稱:Python高效編程>>> s'Python高效編程'

      迭代相關(guān)

      enumerate 函數(shù)返回元素的序號與對應(yīng)值

      enumerate(iterable, start=0)

      iterable 參數(shù)表示可迭代對象,start 參數(shù)是元素序號的起點(diǎn),默認(rèn)為 0。

      enumerate 函數(shù)的等價(jià)形式如下:

      def enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1seq = ['P', 'y', 't', 'h', 'o', 'n']for i, elem in enumerate(seq): print(i, elem)

      zip 函數(shù)用于同時(shí)迭代多個(gè)對象

      zip(*iterables)

      *iterable 可以接受任意多個(gè)可迭代對象

      a = ['**', '**', '**']b = ['微信公眾號', '關(guān)注', 'Python高效編程']c = aprint('#'*20)for i, j, k in zip(a, b, c): print(i, j, k)print('#'*20)####################** 微信公眾號 **** 關(guān)注 **** Python高效編程 **####################

      序列屬性

      1. 序列最大值:max
      2. 序列最小值:min
      3. 序列的和: sum
      4. 序列長度: len

      基本用法:向這四個(gè)函數(shù)中傳入序列,可以得到對應(yīng)屬性。

      import randomrandom.seed(21)seq = [random.randint(0, 100) for i in range(10)]print(seq)# [21, 53, 88, 53, 81, 36, 61, 27, 60, 65]print(max(seq))# 88print(min(seq))# 21print(sum(seq))# 545print(len(seq))# 10

      作為內(nèi)置函數(shù),可以直接傳入生成器(不需要括號)作為參數(shù):

      import randomrandom.seed(21)num = max(random.randint(0, 100) for i in range(10))print(num)# 88

      可傳入 key 參數(shù),作為比較大小的依據(jù),相當(dāng)于把序列中每一個(gè)元素 item 先傳入函數(shù) key 中,將函數(shù)返回的數(shù)值作為判斷對象大小的依據(jù)。

      def foo(x): return 1. / xmax(seq, key = foo)# 21

      對于我們自定義的類型,必須實(shí)現(xiàn)特殊方法,才能進(jìn)行 len 等操作。

      __len__ 代表:len 操作,__eq__ 代表:= 操作,__lt__ 代表 < 操作。

      class foo: def __init__(self, num, seq): self.num = num self.seq = seq  def __len__(self): return len(self.seq)  def __eq__(self, other): return self.num == other.num  def __lt__(self, other): return self.num < other.num>>> f1 = foo(18, [1, 4, 6])>>> f2 = foo(21, [1, 7, 9, 10])>>> f1 < f2True>>> f1 > f2False>>> f1 == f2False>>> f3 = foo(18, [9, 9, 0, 7])>>> f1 == f3True>>> len(f1)3>>> len(f2)4

      操作序列

      range 函數(shù)生成序列

      range(start, stop[, step])
      • start 可選參數(shù),默認(rèn)為 0 ,表示序列起點(diǎn)
      • stop 必選參數(shù),表示序列終點(diǎn),不包括終點(diǎn)
      • step 可選參數(shù),序列的步長,默認(rèn)為 1
      >>> range(6)range(0, 6)>>> list(range(6))[0, 1, 2, 3, 4, 5]>>> list(range(0, 6, 2))[0, 2, 4]

      range 函數(shù)生成的對象可以迭代,和列表很類似,_ 表示廢棄變量(為了避免污染變量環(huán)境):

      for _ in range(3): print('Python高效編程')

      reversed 函數(shù)可以將序列逆置

      reversed 可以將序列逆置,包括元組、字符串、列表。對于列表和字符串的逆置,使用 list[::-1] 或者slice()更加方便。

      import randomrandom.seed(21)seq = [random.randint(0, 100) for i in range(10)]print(seq)# [21, 53, 88, 53, 81, 36, 61, 27, 60, 65]reversed(seq)print(list(reversed(seq)))# [65, 60, 27, 61, 36, 81, 53, 88, 53, 21]

      字符串逆置:

      >>> a = 'Python高效編程'>>> a[::-1]'程編效高nohtyP'>>> ''.join(reversed('Python高效編程'))'程編效高nohtyP'

      sorted 函數(shù)可以對序列進(jìn)行排序

      sorted(iterable, *, key=None, reverse=False)

      sorted 不同于 list.sort 操作(原地排序),返回一個(gè)新的有序序列,原序列保持不變。* 表示僅限關(guān)鍵字參數(shù)(keyword-only),也就是說,key、reverse 參數(shù)只能通過關(guān)鍵字傳參,而不能通過位置傳參。reverve 參數(shù)表示逆置操作,key 與之前 len 中的 key 參數(shù)類似,是函數(shù)排序的依據(jù)。

      >>> sorted([9, 6, 2, 3, 6])[2, 3, 6, 6, 9]

      對象屬性

      1. dir 函數(shù)返回屬性列表
      2. id 函數(shù)返回對象地址
      3. isinstance 判斷對象的類型
      4. type 返回對象的類型
      class foo: pass>>> dir(foo)['__class__', '__delattr__', '__dict__', '__dir__',...... '__str__', '__subclasshook__', '__weakref__']# 創(chuàng)建實(shí)例>>> f = foo()>>> type(foo)__main__.foo>>> isinstance(f, foo)True>>> id(f)2135099584864

      映射類型

      1. eval 解除引號的束縛
      2. map 應(yīng)用函數(shù)于單個(gè)對象
      3. slice 生成切片

      eval 可以去除字符串的單引號,從而獲取引號內(nèi)部內(nèi)容。下面的演示展示了,如何使用 eval 函數(shù)獲取字符串中的字典:

      >>> info = '{'name': 'LiHua', 'age': 12}'>>> eval(info){'name': 'LiHua', 'age': 12}>>> info_dict = eval(info)>>> type(info_dict)dict

      map 將傳進(jìn)來的函數(shù)應(yīng)用于序列中的每一個(gè)元素,并返回迭代器。

      map(function, iterable, ...)

      舉例來說,map 就是對 seq 列表中的每一個(gè)元素 item 進(jìn)行 int 操作(int(item))。匿名函數(shù)同理,就是對序列中的每一個(gè)元素進(jìn)行加 2 的操作。

      >>> seq = [1.5, 4.5, 9.1]>>> list(map(int, seq))[1, 4, 9]>>> list(map(lambda x: x + 2, seq))[3.5, 6.5, 11.1]

      slice 函數(shù)為切片操作命名,使得切片操作更加清晰明了。

      slice(start, stop[, step])

      start 為起點(diǎn),stop 為終點(diǎn),step 為步長。使用該操作,使得截取有規(guī)律的文本內(nèi)容變得很輕松。特別是長文本,使用 slice 函數(shù)更加清晰易懂。

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多