Python基礎(chǔ)回顧

@ 基本類型

  • mutable: dict, list
  • inmutable: number, tuple, string
>>> type(1)
<class 'int'>
>>> type(1.2)
<class 'float'>
>>> type([1])
<class 'list'>
>>> type((1,))
<class 'tuple'>
>>> isinstance(1,int)
True
>>> isinstance(1,float)
False
>>> type({1,'a'})
<class 'set'>
>>> type({1:'a'})
<class 'dict'>
>>>

@異常處理

>>> try:
...     1/0
... except Exception as e:
...     print(e)
... else:
...     pass
... finally:
...     print('end')
...
division by zero
end
>>>

@快速排序

@字典推導(dǎo)式

>>> {k: v for (k,v) in enumerate([1,2,3])}
{0: 1, 1: 2, 2: 3}

@字符串格式化

%format

>>> "fadf%d%s" %(1,'a')
'fadf1a'
>>> "fadf{}{}".format(1,'a')
'fadf1a'

@迭代器和生成器

  • 生成器

fibonacci代碼

>>> l=[x*x for x in range(2)]
>>> l
[0, 1]
>>> g=(x*x for x in range(2)) # generator
>>> g
<generator object <genexpr> at 0x1038f69b0>
>>> next(g)  # next下一個值
0
>>> next(g)
1
>>> next(g) # 直到拋出StopIteration
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> for i in (x*x for x in range(2)): # generator是可迭代對象
...     print(i)
...
0
1
>>> hasattr(g,'__iter__')
True
  • 迭代器

可迭代對象(iterable):list, dict, str, generator, tuple

>>> from collections import Iterable # 使用isinstance判斷是否是iterable(可迭代對象,可以用于for循環(huán))
>>> isinstance([],Iterable) # list
True
>>> isinstance({},Iterable) # dict
True
>>> isinstance('abc',Iterable) # str
True
>>> isinstance((x for x in range(2)), Iterable) # generator
True
>>> isinstance((1,), Iterable) # tuple
True
>>> isinstance(11, Iterable) # int
False

iterator:
可以被next()函數(shù)調(diào)用并不斷返回下一個值的對象稱為迭代器(Iterator)

# 生成器都是Iterator對象,但list、dict、str雖然是Iterable,卻不是Iterator。
>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False
# 把list、dict、str等Iterable變成Iterator可以使用iter()函數(shù):
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True
>>> t='abc'
>>> next(t)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: str object is not an iterator
>>> t=iter(t)
>>> next(t)
'a'
>>> next(t)
'b'
>>>

小結(jié)

  1. 凡是可作用于for循環(huán)的對象都是Iterable類型;
  2. 凡是可作用于next()函數(shù)的對象都是Iterator類型,它們表示一個惰性計(jì)算的序列;
  3. 集合數(shù)據(jù)類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數(shù)獲得一個Iterator對象。
  4. Python的for循環(huán)本質(zhì)上就是通過不斷調(diào)用next()函數(shù)實(shí)現(xiàn)的

@遍歷

>>> d={'a':1,'b':2,'c':3}
>>> for i in d: # 直接遍歷字典,遍歷的是key
...     print(i)
...
a
c
b
>>> for k,v in d.items(): # 使用items()遍歷鍵值對
...     print('{}->{}'.format(k,v))
...
a->1
c->3
b->2
>>> for i in [1,2]: # 遍歷列表
...     print(i)
...
1
2
>>> for index,value in enumerate([1,2]): #遍歷列表(帶索引)
...     print('{}->{}'.format(index,value))
...
0->1
1->2

@copy()和deepcopy()

pass

@讀寫文件

read,readline和readlines

  • read 讀取整個文件
  • readline 讀取下一行,使用生成器方法
  • readlines 讀取整個文件到一個迭代器以供我們遍歷
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基本數(shù)據(jù)類型和運(yùn)算 基本數(shù)據(jù)類型Python中最基本的數(shù)據(jù)類型包括整型,浮點(diǎn)數(shù),布爾值和字符串。類型是不需要聲明的...
    SeanCheney閱讀 1,294評論 0 12
  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的,另外根據(jù)自己平時的積累進(jìn)行修正...
    renyangfar閱讀 3,255評論 0 10
  • 〇、前言 本文共108張圖,流量黨請慎重! 歷時1個半月,我把自己學(xué)習(xí)Python基礎(chǔ)知識的框架詳細(xì)梳理了一遍。 ...
    Raxxie閱讀 19,591評論 17 410
  • 韓劇中的男豬腳,T臺走秀的模特,還有眾多數(shù)不清的小鮮肉和暖男,大都英俊可人有沒有?但是我們通常會被外表所欺瞞從而忽...
    好帥一只虎閱讀 377評論 0 2
  • 每年五月的第二個星期天是母親節(jié),這是一九一四年美國總統(tǒng)威爾遜鄭重宣布的。政府同時規(guī)定:母親節(jié)這天,家家戶戶都要懸掛...
    快樂靈芝閱讀 1,892評論 46 39

友情鏈接更多精彩內(nèi)容