摘要:迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器有兩個基本的方法和。調用一個生成器函數,返回的是一個迭代器對象。生成器函數生成器函數返回一個迭代器函數函數傳入不定長參數加了星號的變量名會存放所有未命名的變量參數。
Python學習--最完整的基礎知識大全
關于python的基礎知識學習,網上有很多資料,今天我就把我收藏的整理一下分享給大家!
下面是我基礎學習時的一點記錄:
python3 循環語句 1. whilen=10 sum = 0 counter = 1 while counter < n: sum = sum + counter counter += 1 print("1到%d之和為:%d" %(n, sum)) #while 循環使用 else 語句 count = 0 while count < 5: print (count, " 小于 5") count = count + 1 else: print (count, " 大于或等于 5")2. for
#可以使range以指定數字開始并指定不同的增量(甚至可以是負數,有時這也叫做"步長") for i in range(0, 10, 3): print(i) for i in range(-10, -100, -30): print(i) a_list = ["google", "baidu", "ie", "firefox", "360"] for i in range(len(a_list)): print(i, a_list[i]) #使用range創建列表 b_list = list(range(8)) print(b_list)3. break和continue
#使用break終止循環 for letter in "helloworld": if letter == "r": break print("當前字母為:", letter) #使用continue跳過循環 for letter in "helloworld": if letter == "l": continue print("當前字母為:", letter)4. pass語句
#說明:pass就是一條空語句。在代碼段中或定義函數的時候,如果沒有內容,或者先不做任何處理,直接跳過,就可以使用pass。 for letter in "helloworld": if letter == "l": pass print("執行pass塊") print("當前字母為:", letter)5. 使用enumerate函數進行遍歷
c_list = [12, 34, 56, 78, 90] for i, j in enumerate(c_list): print(i, j)6. 小練習
for i in range(1, 6): for j in range(1, i+1): print("*",end="") print(" ")
for i in range(1, 10): for j in range(1, i+1): print("%d * %d = %d" %(j, i, i*j), end=" ") print(" ")
def paixu(d_list): for i in range(0, len(d_list)): for j in range(i+1, len(d_list)): if d_list[i] >= d_list[j]: tmp = d_list[i] d_list[i] = d_list[j] d_list[j] = tmp print(d_list) li = [32, 23, 65, 32, 76, 79, 56, 89, 12] paixu(li)Python3 迭代器與生成器 迭代器
迭代器是一個可以記住遍歷的位置的對象。
迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。
迭代器有兩個基本的方法:iter() 和 next()。
import sys it = iter(c_list) print(c_list) print(next(it)) for x in it: print(x, end=" ") it1 = iter(c_list) while True: try: print(next(it1)) except StopIteration: sys.exit()生成器
在 Python 中,使用了 yield 的函數被稱為生成器(generator)。
調用一個生成器函數,返回的是一個迭代器對象。
在調用生成器運行的過程中,每次遇到 yield 時函數會暫停并保存當前所有的運行信息,返回 yield 的值, 并在下一次執行 next() 方法時從當前位置繼續運行。
def fibonacci(n): a = 0; b = 1; counter = 0; while True: if (counter > n): return yield a a, b = b, a + b counter += 1 #生成器函數返回一個迭代器 fibo = fibonacci(10) while True: try: print(next(fibo), end=" ") except: sys.exit()函數 函數傳入不定長參數
#加了星號(*)的變量名會存放所有未命名的變量參數。如果在函數調用時沒有指定參數,它就是一個空元組。我們也可以不向函數傳遞未命名的變量。 def printinfo(arg1, *vartuple): "打印任何傳入的參數" print("輸出:") print(arg1) for var in vartuple: print(var) return printinfo(10) printinfo(10, 20, 30)匿名函數
python 使用 lambda 來創建匿名函數。
所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。
lambda 只是一個表達式,函數體比 def 簡單很多。
lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間里的參數。
雖然lambda函數看起來只能寫一行,卻不等同于C或C++的內聯函數,后者的目的是調用小函數時不占用棧內存從而增加運行效率。
sum = lambda arg1, arg2: arg1 + arg2 print(sum(10,20))變量的作用域
Python中變量的作用域一共有4種,分別是:
L (Local) 局部作用域
E (Enclosing) 閉包函數外的函數中
G (Global) 全局作用域
B (Built-in) 內建作用域
以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。
B = int(2.9) # 內建作用域 G = 0 # 全局作用域 def outer(): E = 1 # 閉包函數外的函數中 def inner(): L = 2 # 局部作用域一個完整的demo
import pickle import os datafile = "C:Users ootDesktopPyDemoperson.data" line = "#########################################" message = """ ####################################### *Welcome bookmark: * * press 1 to show list * * press 2 to add pepole * * press 3 to edit pepole * * press 4 to delete pepole * * press 5 to search pepole * * press 6 to show menu * * press 0 to quit * ####################################### """ #打印菜單欄 print(message) #創建一個人類,有姓名和電話號兩個屬性 class Person(object): def __init__(self, name, number): self.name = name self.number = number #獲取數據 def get_data(filename = datafile): if os.path.exists(filename) and os.path.getsize(filename): with open(filename, "rb") as f: return pickle.load(f) return None #寫入數據 def set_data(name, number, filename = datafile): personList = {} if get_data() == None else get_data() with open(filename, "wb") as f: personList[name] = Person(name, number) pickle.dump(personList, f) #保存字典格式的數據到文件 def save_data(dictPerson, filename = datafile): with open(filename, "wb") as f: pickle.dump(dictPerson, f) #顯示所有聯系人信息 def show_all(): personList = get_data() if personList: for v in personList.values(): print(v.name, v.number) print(line) else: print("空空如也,請添加聯系人!") print(line) #添加聯系人 def add_person(name, number): set_data(name, number) print("添加聯系人成功!") print(line) #更新聯系人 def edit_person(name, number): personList = get_data() if personList: if name in personList.keys(): personList[name] = Person(name, number) save_data(personList) print("更改聯系人信息成功!") else: print("查無此人", name, ",請重試!") print(line) #刪除聯系人 def del_person(neme): personList = get_data() if personList: if name in personList: del personList[name] save_data(personList) print("刪除聯系人成功!") else: print(name, "不存在!") print(line) #查詢聯系人 def find_person(name): personList = get_data() if personList: if name in personList.keys(): print(personList.get(name).name, personList.get(name).number) else: print("查無此人!", name) print(line) while True: num = input(">>>") if num == "1": print("查看所有聯系人:") show_all() elif num == "2": print("添加聯系人:") name = input("請輸入聯系人姓名 >>") number = input("輸入聯系人電話號 >>") add_person(name, number) show_all() elif num == "3": print("更新聯系人:") name = input("請輸入聯系人姓名 >>") number = input("輸入聯系人電話號 >>") edit_person(name, number) show_all() elif num == "4": print("刪除聯系人:") name = input("請輸入聯系人姓名 >>") del_person(name) show_all() elif num == "5": print("查找聯系人:") name = input("請輸入聯系人姓名 >>") find_person(name) elif num == "6": print(message) elif num == "0": break else: print("輸入錯誤,請重試!")
我的個人微信訂閱號:【Java編程社區】 歡迎你的加入!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41543.html
摘要:為什么我會說它們是一樣的簡單思考一下我的后端書架后端掘金我的后端書架月前本書架主要針對后端開發與架構。一方案調研版本選擇當前主流版本是和應用的后臺運行配置后端掘金醬油一篇,整理一下關于后臺運行的一些配置方式。 分享 50 個完整的 React Native 項目 - 掘金本文為 Marno 原創,轉載必須保留出處! 公眾號 aMarno,關注后回復 RN 加入交流群 簡書專題《 Rea...
摘要:在線挑戰,還沒用過,貌似現在對英文資料心里還有種抵觸,必須克服實驗樓研發工程師包含了等學習課程。書的作者就是開發了用于數據分析的著名開源庫的作者英文資料,對數據分析中要用到的一些庫,等等做了簡要介紹。形式的資料,示例代碼都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、說明 面對網絡上紛繁復雜的資...
摘要:做這一領域的工作,有很多網站能夠起到輔助性的作用。再加上爬蟲相對于其他熱門方向來說,更容易學。也促使更多人會優先選擇學習爬蟲。能夠代替手工完成手工無法完成的測試任務,并且可以記錄相關數據及報告。 ...
摘要:里,有兩種方法獲得一定范圍內的數字返回一個列表,還有返回一個迭代器。在引用計數的基礎上,還可以通過標記清除解決容器對象可能產生的循環引用的問題。列舉常見的內置函數的作用,過濾函數,循環函數累積函數一行代碼實現乘法表。 showImg(https://segmentfault.com/img/remote/1460000019294205); 1、為什么學習Python? 人生苦短?人間...
閱讀 3510·2021-11-25 09:43
閱讀 1266·2021-09-08 09:45
閱讀 2643·2021-09-07 09:59
閱讀 1502·2021-08-09 13:45
閱讀 3339·2019-08-30 15:54
閱讀 696·2019-08-29 18:35
閱讀 513·2019-08-29 17:18
閱讀 992·2019-08-29 14:10