日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python编程-迭代器(类,方法,继承),函数,数据结构,

發布時間:2024/1/23 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python编程-迭代器(类,方法,继承),函数,数据结构, 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
a, b = 0, 1 while b < 10:print(b) #print(b,end=',')a, b = b, a+b相當于 n=b m=a+b a=n b=m輸出: 1 1 2 3 5 8#輸出: 1,1,2,3,5,8

關鍵字end可以用于將結果輸出到同一行,或者在輸出的末尾添加不同的字符!

條件控制:

  • 1、每個條件后面要使用冒號?:,表示接下來是滿足條件后要執行的語句塊。
  • 2、使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
  • 3、在Python中沒有switch – case語句。

循環:

for 實例中使用了 break 語句,break 語句用于跳出當前循環體:

continue語句,跳出本次循環,進行下一次循環;

range(初始值,終點值(取不到),步長)

?

迭代器

迭代是Python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是一個可以記住遍歷的位置的對象。

迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。

迭代器有兩個基本的方法:iter()?和?next()

字符串,列表或元組對象都可用于創建迭代器:

#!/usr/bin/python3list=[1,2,3,4] it = iter(list) # 創建迭代器對象 for x in it:print (x, end=" ")1 2 3 4

創建一個迭代器

把一個類作為一個迭代器使用需要在類中實現兩個方法 __iter__() 與 __next__() 。

如果你已經了解的面向對象編程,就知道類都有一個構造函數,Python 的構造函數為 __init__(), 它會在對象初始化的時候執行。

更多內容查閱:Python3 面向對象

__iter__() 方法返回一個特殊的迭代器對象, 這個迭代器對象實現了 __next__() 方法并通過 StopIteration 異常標識迭代的完成。

__next__() 方法(Python 2 里是 next())會返回下一個迭代器對象。

創建一個返回數字的迭代器,初始值為 1,逐步遞增 1:

?

類實例化后,可以使用其屬性,實際上,創建一個類之后,可以通過類名訪問其屬性。

類對象支持兩種操作:屬性引用和實例化。

屬性引用使用和 Python 中所有的屬性引用一樣的標準語法:obj.name

類對象創建后,類命名空間中所有的命名都是有效屬性名。所以如果類定義是這樣:

#!/usr/bin/python3class MyClass:"""一個簡單的類實例"""i = 12345def f(self):return 'hello world'# 實例化類 x = MyClass()# 訪問類的屬性和方法 print("MyClass 類的屬性 i 為:", x.i) print("MyClass 類的方法 f 輸出為:", x.f())MyClass 類的屬性 i 為: 12345 MyClass 類的方法 f 輸出為: hello world

類有一個名為 __init__() 的特殊方法(構造方法),該方法在類實例化時會自動調用,像下面這樣:

當然, __init__() 方法可以有參數,參數通過 __init__() 傳遞到類的實例化操作上。例如:

#!/usr/bin/python3class Complex:def __init__(self, realpart, imagpart):self.r = realpartself.i = imagpart x = Complex(3.0, -4.5) print(x.r, x.i) # 輸出結果:3.0 -4.5

self代表類的實例,而非類

類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。

class Test:def prt(self):print(self)print(self.__class__)t = Test() t.prt()#輸出 <__main__.Test object at 0x0000028E52F59B00> <class '__main__.Test'>

類的方法

在類的內部,使用?def?關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self, 且為第一個參數,self 代表的是類的實例。后續再使用def關鍵字時,就可以使用_init_中的self,但你不可以在已經定義的self外引用參數。更近一步,如果想要新加self參數,可以用類的繼承!

實例(Python 3.0+) #!/usr/bin/python3#類定義 class people:#定義基本屬性name = ''age = 0#定義私有屬性,私有屬性在類外部無法直接進行訪問__weight = 0#定義構造方法def __init__(self,n,a,w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 說: 我 %d 歲。" %(self.name,self.age))# 實例化類 p = people('runoob',10,30) p.speak()#輸出 runoob 說: 我 10 歲。

繼承

繼承Python 同樣支持類的繼承,如果一種語言不支持繼承,類就沒有什么意義。

#!/usr/bin/python3#類定義 class people:#定義基本屬性name = ''age = 0#定義私有屬性,私有屬性在類外部無法直接進行訪問__weight = 0#定義構造方法def __init__(self,n,a,w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 說: 我 %d 歲。" %(self.name,self.age))#單繼承示例 class student(people):grade = ''def __init__(self,n,a,w,g):#調用父類的構函people.__init__(self,n,a,w)self.grade = g#覆寫父類的方法def speak(self):print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))s = student('ken',10,60,3) s.speak() 執行以上程序輸出結果為:ken 說: 我 10 歲了,我在讀 3 年級

更多關于類的說明,點擊直達

總結:

#!/usr/bin/python3class MyClass:"""一個簡單的類實例"""i = 12345def f(self):return 'hello world'# 實例化類 x = MyClass()# 訪問類的屬性和方法 print("MyClass 類的屬性 i 為:", x.i) print("MyClass 類的方法 f 輸出為:", x.f())MyClass 類的屬性 i 為: 12345 MyClass 類的方法 f 輸出為: hello world------------------------------------------------------------------- 類有一個名為 __init__() 的特殊方法(構造方法),該方法在類實例化時會自動調用, #!/usr/bin/python3class Complex:def __init__(self, realpart, imagpart):self.r = realpartself.i = imagpart x = Complex(3.0, -4.5) print(x.r, x.i) # 輸出結果:3.0 -4.5---------------------------------- #單繼承示例 class student(MyClass):grade = ''def __init__(self,n,a,w,g):#調用父類的構函MyClass.__init__(self,n,a,w)self.grade = g#覆寫父類的方法def speak(self):print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))s = student('ken',10,60,3) s.speak() 執行以上程序輸出結果為:ken 說: 我 10 歲了,我在讀 3 年級

函數

定義一個函數

你可以定義一個由自己想要功能的函數,以下是簡單的規則:

  • 函數代碼塊以?def?關鍵詞開頭,后接函數標識符名稱和圓括號?()
  • 任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用于定義參數。
  • 函數的第一行語句可以選擇性地使用文檔字符串—用于存放函數說明。
  • 函數內容以冒號起始,并且縮進。
  • return [表達式]?結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當于返回 None。
#!/usr/bin/python3# 計算面積函數 def area(width, height):return width * heightdef print_welcome(name):print("Welcome", name)print_welcome("Runoob") w = 4 h = 5 print("width =", w, " height =", h, " area =", area(w, h)) 以上實例輸出結果:Welcome Runoob width = 4 height = 5 area = 20

匿名函數

python 使用 lambda 來創建匿名函數。

所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。

  • lambda 只是一個表達式,函數體比 def 簡單很多。
  • lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
  • lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間里的參數。
  • 雖然lambda函數看起來只能寫一行,卻不等同于C或C++的內聯函數,后者的目的是調用小函數時不占用棧內存從而增加運行效率。
#!/usr/bin/python3# 可寫函數說明 sum = lambda arg1, arg2: arg1 + arg2# 調用sum函數 print ("相加后的值為 : ", sum( 10, 20 )) print ("相加后的值為 : ", sum( 20, 20 )) 以上實例輸出結果:相加后的值為 : 30 相加后的值為 : 40

return語句

return [表達式]?語句用于退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None。之前的例子都沒有示范如何返回數值,以下實例演示了 return 語句的用法:

#!/usr/bin/python3# 可寫函數說明 def sum( arg1, arg2 ):# 返回2個參數的和."total = arg1 + arg2print ("函數內 : ", total)return total# 調用sum函數 total = sum( 10, 20 ) print ("函數外 : ", total) 以上實例輸出結果:函數內 : 30 函數外 : 30

變量作用域

Python 中,程序的變量并不是在哪個位置都可以訪問的,訪問權限決定于這個變量是在哪里賦值的。

變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。Python的作用域一共有4種,分別是:

  • L (Local) 局部作用域
  • E (Enclosing) 閉包函數外的函數中
  • G (Global) 全局作用域
  • B (Built-in) 內置作用域(內置函數所在模塊的范圍)

以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內置中找。

g_count = 0 # 全局作用域 def outer():o_count = 1 # 閉包函數外的函數中def inner():i_count = 2 # 局部作用域

調用函數使用的是函數內部的局部變量,未調用函數,使用的是全局變量!

?

#!/usr/bin/python3total = 0 # 這是一個全局變量 # 可寫函數說明 def sum( arg1, arg2 ):#返回2個參數的和."total = arg1 + arg2 # total在這里是局部變量.print ("函數內是局部變量 : ", total)return total#調用sum函數 print ("函數外是全局變量 : ", total) sum( 10, 20 )輸出 函數外是全局變量 : 0 函數內是局部變量 : 30

更多關于函數內容,點擊

數據結構

數據結構是編程的基礎,必須熟練掌握!

??特征常見用法
不可變數據數字=123用于計算,沒有索引;注意優先級(**》*/》not》and》or)>>> 17 % 3 # 取余?
2
字符串=''Python 字符串不能被改變,可以添加索引
常用用法:+字符串,*2復制2遍

a='string'

a[0]='c' #非法

print(a[0]) #合法

print (a?* 2) ? ? ?# 輸出字符串兩次
print (a?+ "TEST") # 連接字符串

元組=()元組(tuple)與列表類似,不同之處在于元組的元素不能修改。tup1 = () ? ?# 空元組
tup2 = (20,) # 一個元素,需要在元素后添加逗號
可變數據列表=[]可以被索引,可以更改(不同于字符串),列表中元素的類型可以不相同,+,*依舊有效;

>>>a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9 #通過索引改列表

>>>del a[2] #刪除列表元素

字典={}字典是無序的對象集合,不能通過索引,但可以通過鍵找值(鍵唯一);構造字典方法很多;

b={'adf':'www','eee':123}
#print (b[0]) #錯誤!字典是無序的,只能通過鍵來引用。
print (b['adf'])#合法

a={} #構造空字典

集合={}集合區分其它數據類型很大一個特點就是:集合可以進行交集,差集,補集的運算。創建一個空集合必須用?set()?而不是?{ },因為?{ }?是用來創建一個空字典

# set可以進行集合運算
a = set('abracadabra')
b = set('alacazam')
print(a) ? ? ? ? #a是去除重復值

{'b', 'a', 'c', 'r', 'd'}#用{}拆分后表示
print(a - b) ? ? # a 和 b 的差集

數據類型轉換list()

list() 方法用于將元組,字符串,字典,集合轉換為列表

其中,字符串轉換成列表,是將字符串中的每個字符轉換成列表的一個元素。

aTuple = (123, 'Google')
list1 = list(aTuple) #原組轉換列表
print ("列表元素 : ", list1)

列表元素 : ?[123, 'Google']

tuple()tuple()將列表,字符串,字典,集合轉換為元組;字符串都被單一拆分開來了;

list1= ['Google', 'Taobao']
b=tuple(list1)
print (b)

('Google', 'Taobao')

pandasDataFrameDataFrame是Python中Pandas庫中的一種數據結構,它類似excel,是一種二維表。

可由列表,字典創建

import pandas as pd from pandas import Series, DataFrame data = {'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]} df1= DataFrame(data) df2 = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])

?

?

pandasseriesSeries 是個定長的字典序列。Series有兩個基本屬性:index 和 values。 import pandas as pd from pandas import Series, DataFrame x1 = Series([1,2,3,4]) x2 = Series(data=[1,2,3,4], index=['a', 'b', 'c', 'd'])
numpyndarraylist 的元素在系統內存中是分散存儲的,而 NumPy 數組存儲在一個均勻連續的內存塊中,方便遍歷;此外,numpy矩陣運算采用多線程方式,可以提升計算效率。 import numpy as np a = np.array([1, 2, 3]) b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])a是一維數組,b是二維數組!

總結

以上是生活随笔為你收集整理的python编程-迭代器(类,方法,继承),函数,数据结构,的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。