Python迭代筆記

2021-10-02 03:37:56 字數 2997 閱讀 3381

for x in[1

,2,3

]:#列表...

:print

(x)...

:123

for x in(1

,2,3

):#元組...

:print

(x)...

:123

d =#字典表

for k in d:..

.:print

(k)...

: ab

f =open

('hello.txt'

)#檔案本身也是迭代器物件,不呼叫讀方法也能直接遍歷

for line in f:..

.:print

(line, end ='')

...:

hello world

python

f =

open

('hello.txt'

)iter

(f)is f

out[14]

:true

f.__next__(

)out[16]

:'hello world\n'

f.__next__(

)out[18]

:'python\n'

l =[

'a',

'b',

'c']

iter

(l)is l

out[21]

:false

l.__next__(

)attributeerror:

'list'

object has no attribute '__next__'

i =iter

(l)i.__next__(

)out[25]

:'a'

i.__next__(

)out[26]

:'b'

i.__next__(

)out[27]

:'c'

檔案和列表都能直接用for迴圈遍歷,因為它們都實現了_next_()方法,使用時無需將整個檔案或列表讀入記憶體,而是乙個元素接下乙個元素遍歷。但它們之間還有區別,檔案屬於迭代器物件,已經直接實現了_next_()方法;而列表屬於可迭代物件,一開始並沒實現_next_()方法,而是在使用for迴圈遍歷時通過iter()方法實現_next_()方法。

l =[1

,2,3

]res =

i =iter

(l)while

true:.

..:try:.

..next

(i)**2)

...:

except stopiteration:..

.:break..

.:

resout[36]

:[1,

4,9]

# result = [x**2 for x in l]使用列表推導,效率更高

emp =

emp.keys(

)#為可迭代物件而非列表,更省記憶體

out[38]

: dict_keys(

['name'

,'age'

,'salary'])

emp.items(

)out[39]

: dict_items([(

'name'

,'tom'),

('age',20

),('salary'

,8000.0)]

)keys = emp.keys(

)iter

(keys)

is keys

out[41]

:false

i =iter

(keys)

#建立迭代器物件

i.__next__(

)out[43]

:'name'

i.__next__(

)out[44]

:'age'

next

(i)out[45]

:'salary'

r =

range(1

,20)#range()返回的物件支援迴圈遍歷及推導,但並非列表,屬於可迭代物件

type

(r)out[47]

:range

iter

(r)is r

out[48]

:false

i =iter

(r)i.__next__(

)out[50]

:1i.__next__(

)out[51]

:2next

(i)out[52]

:3result =

zip([1

,2,3

],['a'

,'b'

,'c'])

#zip()返回的也屬於可迭代物件

result

out[54]

:<

zip at 0x20d981fe708

>

for x in result:..

.:print

(x)...

:(1,

'a')(2

,'b')(

3,'c')

result =

zip([1

,2,3

],['a'

,'b'

,'c'])

iter

(result)

is result

out[58]

:true

result.__next__(

)out[59]

:(1,

'a')

類似range()、zip()返回可迭代物件的還有map()、filter(),比直接返回列表更節省記憶體。

線代筆記1

n元齊次方程方程組的解空間 秩r 是 rn上的n r維的子空間。解空間 零空間 是係數矩陣a行空間的正交補。正交補的意思是,n維空間裡的兩個子空間正交,且兩個子空間原點重合起來剛好成張成n維空間。將矩陣a看作行向量 則矩陣方程ax 0可以理解為 任意解向量與行向量正交 因為內積為0 而這些行向量可以...

線代筆記2

可逆 行列式不為零 滿秩 齊次方程只有零解 線性無關 線性無關的意思是 向量之間沒有任何關係,誰也不能表示誰,誰也不能被誰表示,向量前的係數都是零 在高斯消元過程中,會出現方程組中若干個方程被消去的情況,剩下的方程個數稱為r,稱為線性方程組的秩。這r個方程可以表示原方程組中的所有方程,並且這r個方程...

線代筆記3

對應於係數矩陣初等變換後,對應 於主元列 的 變數 稱為基本變數,對應 非主元列 的 變數 稱為自由變數 基本變數可以表示成自由變數的 線性組合 也就是說,自由變數之間是 線性無關 的 可以被自由變數表示的基本變數和自由變數之前是線性相關的,自由變數之間是線性無關的,因為把基本變數右移,就成了乙個係...