Python 中的 for 循環如何使用?
詳細的講下for循環+in關鍵字之間處理列表數據的方法 以及while循環 舉出具體例子來 讀《head first python》時沒有看懂書中這段 ,謝謝。
不要把 Python 中的 for 語法當 C 語言裡面那種 for 循環來用,雖然我們習慣上還是說 for 循環,但Python 中 for 的語義不是循環,而是遍歷迭代器——對一個迭代器(實現了 __next__)或者可迭代對象(實現了 __iter__)而言的。
比如:for item in iterable:
do_something(item)
其實是等價於:
_iterable = iter(iterable) # iterable.__iter__()
while True:
try:
do_something(next(_iterable)) # _iterable.__next__()
except StopIteration:
break
如果用過 PHP,那 Python 中 for 和 PHP 中的 foreach 是一樣的。
更像 foreach 。
for 循環這麼用
&>&>&> a = [1, 2, 3]
&>&>&> for i in a:print i1
23
while 循環這麼用
&>&>&> i = 3&>&>&> while i:print ii -= 1
321我用專欄里的一篇文章來答題。
專欄鏈接:給妹子講python,歡迎大家關注,提意見!
下面我們來全方位的介紹for循環的詳細用法:
for循環與while相比更加通用,他是一個通用的序列迭代工具,可以遍歷任何有序的序列對象內的元素。例如之前介紹過的:字元串、列表、元組等,以及其他一些內置的可以用來迭代的對象(到時候專門展開)。
回顧幾個例子,列表、字元串、元組的遍歷
for x in [1,2,3,4]:
print(x, end=" ")
1 2 3 4
for x in "hello":
print(x, end=" ")
h e l l o
for x in ("i", "am", "a", "teacher"):
print(x,end=" ")
i am a teacher
T = [(1, 2), (3, 4), (5, 6)]
for (a, b) in T:
print(a,b)
1 2
3 4
5 6
這裡再單獨說說另外兩種特殊的內置類型對象,一個是字典、一個是文件。
字典的遍歷
字典的遍歷這裡單獨說說,相比於上面幾個序列類型,字典的特殊之處在於他內部的對象不是有序的。
但是他也能通過for循環來遍歷,常見的是通過值來遍歷,還有一種是通過鍵值對的元組來遍歷
D = {"a":1, "b":2, "c":3}
for key in D:
print(key, "---&>", D[key])
b ---&> 2
c ---&> 3
a ---&> 1
D = {"a": 1, "b": 2, "c": 3}
for (key, value) in D.items():
print(key, "---&>", value)
a ---&> 1
c ---&> 3
b ---&> 2
文件的遍歷
因為文件保存了很多字元和行,因此也是循環常見的典型使用案例,最原始的方法可以調用文件對象的read方法,把文件內容一次性載入至字元串對象
file = open("myfile.txt", "r")
print(file.read())
hello text file
goodbyt text file
Hahahahah
那麼如果想逐行讀取文本文件呢?for循環是最易於編寫及執行最快的選擇,這裡有兩種方法,
for line in open("myfile.txt","r").readlines():
print(line, end="")
for line in open("myfile.txt","r"):
print(line, end="")
hello text file
goodbyt text file
Hahahahah
這兩種方法的運行結果是一樣的,表面差別不大,但實際上有很大的區別:
第一種方法通過readlines方法,會首先一次性把文件載入到行字元串列表中,然後再對這個字元串列表進行迭代;
而第二種方法運行的原理則有所不同,他並非一次性將全部的文件內容載入到內存中,而是在迭代的時候,循環到了哪一行才將哪一行讀入到內存。這裡涉及到一個新的概念----迭代器(open函數返回的那個就是文件迭代器),後面再著重系統介紹。
現在我們只需要知道,第二種方法是文本文件讀取的最佳選擇,它簡單、且對任意大小的文件都有效,因為他不會一次性把整個文件都載入到內存中,相反第一種方法存在內存壓力過大的問題。
推薦閱讀:
※Python3 是否已經完成了取代 Python2 的歷史進程?
※求一本 Python 3 的好書,入門級別或中等級別,求推薦?
※Python操作MySQL資料庫安全嗎?
※哪裡有優秀的python代碼可供閱讀?
※python 3.5 中 PEP0484 新加入的 Type Hints 的使用方法是什麼?
TAG:Python | Python3x | Python使用技巧 |