for i in[1
,2,3
]:print
(i)# 遍歷 迭代
# 可迭代物件
上述是一種遍歷,也是迭代,in後面的叫可迭代物件,for迴圈就叫迭代器.
可迭代物件:list、str、tuple、
判斷可迭代物件的方法:isinstance()
from collections import iterable
print
(isinstance([
1,2,
3],iterable)
)print
(isinstance
(,iterable)
)print
(isinstance((
1,),iterable)
)print
(isinstance
('100'
,iterable)
)print
(isinstance
(100
,iterable)
)# false
決定乙個容器是否能被迭代。
乙個容器想成為可迭代物件,必須有iter方法,並且返回乙個迭代器。
class
mylist
:def
__init__
(self)
: self.container =
defadd
(self, item)
:def
__str__
(self)
:return f''
# iter方法是關鍵
def__iter__
(self)
:'''返回乙個迭代器'''
pass
mylist = mylist(
)mylist.add(1)
mylist.add(2)
mylist.add(3)
print
(mylist)
print
(isinstance
(mylist,iterable)
)
乙個物件實現了__iter__
和__next__
方法,就是迭代器。
li =[11
,22,33
,44,55
]li_iter =
iter
(li)
print
(next
(li_iter)
)list1 =[1
,2,3
,4,5
]li_iter =
iter
(list1)
# 通過iter方法拿到列表的迭代器
while1:
try:
print
(li_iter.__next__())
# 迴圈呼叫列表迭代器的next方法
except stopiteration as e:
break
定義乙個迭代器
class
myiterator
:'''自定義迭代器'''
def__init__
(self,mylist)
: self.mylist = mylist
# cur 用來記錄當前訪問到的位置
self.cur =
0def
__next__
(self)
:# 當前位置,小於容器長度時
if self.cur <
len(self.mylist.container)
:# 返回位置所對應的元素
item = self.mylist[self.cur]
# 位置加1
self.cur +=
1return item
else
:# 如果已經取完,再次呼叫next則丟擲異常
raise stopiteration
def__iter__
(self)
:# 迭代器本身也是乙個可迭代物件,自身也需要實現__iter__方法
# 也需要乙個迭代器,返回自身即可
myiterator = myiterator(self)
return myiterator
for 迴圈的本質
我們在進行迭代的時候,實際上是在對乙個迭代器進行操作。
列表有推導式,元組也可以做推導式。它們都是生成器。
以下是第一種生成器。
x =
(i for i in
range(10
))print
(x)while
true
:try
:print
(next
(x))
except
:break
第二種生成器:乙個函式只要使用了yield關鍵字,就不再是函式,而是生成器。
def
fib(n)
:if n<=2:
return
1 a,b =0,
1for _ in
range
(n):
a,b = b,a+b
yield a
g = fib(6)
print
(g)while
true
:try
:print
(next
(x))
except
:break
yield1、相當於return,將後面的值返回
2、函式執行暫停在當前位置,使用next從當前暫停位置繼續執行。
3、除了可以使用next喚醒重新執行外,還可以使用send來喚醒。使用send喚醒時,哈可以傳入資料。
import os
# rename重新命名
os.rename(
'test1.txt'
,'666.txt'
)# remove刪除檔案
os.remove(
'test.txt'
)# mkdir建立資料夾(目錄)
os.mkdir(
'py'
)# rmdir刪除單級空資料夾(目錄)
os.rmdir(
'py'
)# 獲取當前目錄
print
(os.getcwd(
))
makedirs,建立有多層遞迴原則,如os.mkdir('a/b')
建立二級目錄,a目錄下有b目錄。
mkdir不能建立已存在的目錄,否則會報錯。所以我們需要加上這麼一句話:
if
not os.path.exists(
'py'):
os.mkdir(
'py'
)
在命令列中執行命令時,由sys模組以列表的形式接收引數。
sys.ar**:
import sys
print
('引數個數為:'
,len
(sys.ar**)
,'個引數。'
)print
('引數列表:'
,str
(sys.ar**)
)
sys.ar** 只提供了比較簡單的命令引數獲取方式,並沒有提供命令提示。無法做到像linux命令一樣,可以給使用者提供help幫助。 python新手入門
1.先看下python的基礎,然後去看 ng的機器學習課程,最後結合周志華的機器學習和 機器學習實戰兩本書 2.盡量不要直接呼叫工具箱,自己去實現演算法 3.先安andconda,再安ide就可以了,pycharm 4.4,測試anaconda,桌面 開始 右下角執行 ipython第乙個 執行 5...
git新手入門筆記
如下圖所示 解釋 最開始 在workspace 工作區 中 add index 暫存區 commit repository 倉庫 push remote 遠端庫 也可以 現在remote中 pull 工作區 7git的基礎操作 7.1 新建乙個資料夾hellogit 7.2 開啟hellogit資料...
Python新手入門英文
四 定義函式與設定引數 1 birthday 出生日期 2 year 年份 3 month 月份 4 day 日期 5 type 型別 6 error 錯誤 7 missing 丟失 8 required 必須 9 positional 位置 10 unsupported 不支援 五 設定收集引數 ...