程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【python復習筆記】

編輯:Python

文章目錄

    • 一、列表
        • 1、查找列表元素值索引
        • 2、列表添加元素
        • 3、列表刪除元素
        • 4、列表排序
        • 5、列表生成式
    • 二、字典
        • 1、字典元素的獲取
        • 2、字典添加元素
        • 3、字典刪除元素
        • 4、獲取字典的視圖
        • 5、字典生成式
    • 三、集合
        • 1、集合新增元素
        • 2、集合刪除元素
        • 3、集合生成式
    • 四、字符串
        • 1、字符串的分割
        • 2、字符串的替換
        • 3、字符串的合並
    • 五、異常處理機制
    • 六、類和對象
        • 1、定義類
        • 2、類變量和實例變量
        • 3、實例方法、類方法和靜態方法
        • 4、類對象的創建和調用實例方法
        • 5、封裝
        • 6、繼承
        • 7、多態

一、列表

1、查找列表元素值索引

index()方法:用於從列表中找出某個值第一個匹配項的索引位置。

語法:listname.index(x,start,end)

  • listname-- 列表名
  • x-- 查找的對象。
  • start-- 可選,查找的起始位置。
  • end-- 可選,查找的結束位置。

如:list.index('python') 返回的結果是list列表python這個元素對應的索引值。

2、列表添加元素

①、append()方法:用於在列表的末尾追加元素

語法:listname.append(x)

  • listname-- 需要添加元素的列表名
  • x-- 添加到列表末尾的數據,它可以是單個元素,也可以是列表、元組等。

②、extend()方法:用於在列表的末尾追加元素

語法:listname.extend([x])

  • listname-- 需要添加元素的列表名
  • x-- 添加到列表末尾的數據,它可以是單個元素,也可以是列表、元組等。
  • 注意:x的那個[]最好要加上

③、insert()方法:用於在列表中間某個位置插入元素

語法:listname.insert(index, x)

  • listname-- 需要添加元素的列表名
  • index-- 指定插入位置的索引值
  • x-- 添加到列表指定位置的數據,它可以是單個元素,也可以是列表、元組等。

④、合並方法:利用列表的切片操作,將兩個列表進行合並。

3、列表刪除元素

①、def方法:根據索引值刪除元素

語法:def listname[index]del listname[start, end]

  • listname-- 需要刪除元素的列表名
  • index-- 需要刪除的元素的索引值
  • start-- 起始索引
  • end-- 結束索引
  • 注意:del 會刪除從索引 start 到 end 之間的元素,不包括 end 位置的元素

②、pop()方法:根據索引值刪除元素

語法:listname.pop(index)

  • listname-- 需要刪除元素的列表名
  • index-- 需要刪除的元素的索引值
  • 注意:如果不寫 index 參數,默認會刪除列表中的最後一個元素

③、remove()方法:根據元素值刪除元素

語法:listname.remove(x)

  • listname-- 需要刪除元素的列表名
  • x-- 需要刪除的元素
  • 注意:remove()方法一次刪除一個元素;重復的元素只刪除第一個;元素不存在時,會拋出錯誤。

④、clear()方法:清空列表

語法:listname.clear()

  • listname-- 需要刪除元素的列表名

4、列表排序

①、sort()方法

語法:listname.sort(reverse=)

  • listname-- 需要進行排序的列表名
  • 參數reverse-- 為True時,表示降序排序;為Flase時,表示升序排序;默認為升序排序。

②、sorted()方法

語法:sorted(listname, reverse= )

  • listname-- 需要進行排序的列表名
  • 參數reverse-- 為True時,表示降序排序;為Flase時,表示升序排序;默認為升序排序。

③、兩種方法的區別

sort()方法是在原列表的基礎上,直接排序,會改變原列表;
sorted()方法會將排序結果保留到新的列表中,原列表不會改變。

5、列表生成式

''' 舉一個例子,將偶數篩選出來,放到一個列表裡,打印這個列表 '''
# 一般的寫法
li1 = []
for i in range(1, 10):
if i % 2 == 0:
li1.append(i)
print('一般寫法的輸出結果:', li1)
# 列表生成式的寫法
li2 = [i for i in range(1, 10) if i % 2 == 0]
print('列表生成式的輸出結果:', li2)

結果如下:

一般寫法的輸出結果: [2, 4, 6, 8]
列表生成式的輸出結果: [2, 4, 6, 8]

二、字典

1、字典元素的獲取

①、[ ]方法

語法:dictname["key"]

  • dictname-- 字典名
  • key-- 元素對應鍵名

②、get()方法

語法:dictname.get("key")

  • dictname-- 字典名
  • key-- 元素對應鍵名

③、兩種方法的區別
[ ]方法,找不到對應的key,會報一個KeyError錯誤;
get方法,找不到對應的key,會返回None,也可以通過參數設置,使返回值不是None,而是設定的值。

如:

result = dictname.get("key", 'error')

如果key不是dictname字典中存在的鍵,那麼打印result的結果是error。

2、字典添加元素

①、[ ]方法

語法:dictname[key] = value

  • dictname-- 需要添加元素的字典名
  • key-- 指定一個dictname字典中不存在的key(如果dictname字典中存在key,則是修改操作)作為添加的元素的key
  • value-- 添加的元素的value值

②、update()方法

語法1:dictname.update({key : value})
語法2:dictname.update(key = value)

  • dictname-- 需要添加元素的字典名
  • key-- 指定一個dictname字典中不存在的key(如果dictname字典中存在key,則是修改操作)作為添加的元素的key
  • value-- 添加的元素的value值

3、字典刪除元素

①、pop()方法

語法:dictname.pop(key)

  • dictname-- 需要刪除元素的字典名
  • key-- 需要刪除元素對應的key

②、del方法

語法:del dictname[key]

  • dictname-- 需要刪除元素的字典名
  • key-- 需要刪除元素對應的key

③、clear()方法:用於清空字典

語法:dictname.clear()

  • dictname-- 需要清空的字典名

4、獲取字典的視圖

keys = dictname.keys() # 獲取所有key組成的視圖
values = dictname.values() # 獲取所有value組成的視圖
items = dictname.items() # 獲取所有key-value對,組成的視圖
  • dictname-- 字典名

5、字典生成式

示例如下:

''' 將字典的key與value位置互換 '''
dict1 = {
"one": 1, "two": 2, "three": 3}
dict2 = {
value: key for key, value in dict1.items()}
print(dict2)

輸出結果:

{
1: 'one', 2: 'two', 3: 'three'}

三、集合

1、集合新增元素

①、add()方法:一次添加一個元素

語法:setname.add(x)

  • setname-- 添加元素的集合名
  • x-- 添加的元素

②、update()方法:一次添加多個元素

語法:setname.update(x)

  • setname-- 添加元素的集合名
  • x-- 添加的元素

示例如下:

a = set('str')
a.add('python')
b = set('str')
b.update('python')
c = {
1, 2, 3}
c.add(80)
d = {
1, 2, 3}
d.update([10, 20, 30])
''' d.update([10, 20, 30]) 也可以寫成 d.update({10, 20, 30}) d.update((10, 20, 30)) '''
print(a)
print(b)
print(c)
print(d)

輸出結果:

{
'python', 't', 'r', 's'}
{
'n', 'r', 'h', 'o', 'y', 'p', 's', 't'}
{
80, 1, 2, 3}
{
1, 2, 3, 10, 20, 30}

2、集合刪除元素

①、remove()方法:刪除指定元素

語法:setname.remove(element)

  • setname-- 集合名
  • element-- 需要刪除的元素

②、discard()方法:刪除指定元素

語法:setname.discard(element)

  • setname-- 集合名
  • element-- 需要刪除的元素

remove()方法和discard()方法的區別:

使用 remove 方法刪除元素時,如果元素不存在集合中,那麼程序會報錯。
使用 discard 方法刪除元素時,如果元素不存在集合中,那麼程序不會報錯。

③、pop()方法:刪除第一個元素,並返回刪除的元素

語法:setname.pop()

  • setname-- 集合名

④、clear()方法:清空集合

語法:setname.clear()

  • setname-- 集合名

示例如下:

a = {
1, 2, 3, 4, 5}
a.remove(2)
print(a)
b = {
1, 2, 3, 4, 5}
b.discard(3)
print(b)
c1 = {
1, 2, 3, 4, 5}
c2 = c1.pop()
print(c1)
print(c2)
d = {
1, 2, 3, 4, 5}
d.clear()
print(d)

輸出結果:

{
1, 3, 4, 5}
{
1, 2, 4, 5}
{
2, 3, 4, 5}
1
set()

3、集合生成式

相比與列表生成式,只是將 [ ] 改成了 { } ;
如果你想去除重復的元素,可以使用集合生成式。

四、字符串

1、字符串的分割

split()方法:指定分隔符對字符串進行切片

語法:strname.split(x)

  • strname-- 字符串名
  • x-- 指定的分隔符

2、字符串的替換

replace()方法:把字符串中的舊字符串替換成新字符串

語法:strname.replace(old, new)

  • strname-- 字符串名
  • old-- 將被替換的子字符串
  • new-- 新字符串,用於替換old子字符串

3、字符串的合並

①、+ 方法

通過+這個符號來拼接字符串

②、join()方法:將列表(或元組)中多個字符串采用固定的分隔符連接在一起

語法:newstr = str.join(iterable)

  • newstr-- 合並後生成的新字符串
  • str-- 指定合並時的分隔符
  • iterable-- 做合並操作的源字符串數據
lie = ['www', 'baidu', 'com']
newstr = '.'.join(lie)
print(newstr)

輸出結果:

www.baidu.com

五、異常處理機制

try:
# 這部分寫不能確定正確執行的代碼
except Exception as e:
print('未知錯誤 %s' %e)

六、類和對象

1、定義類

定義類的基本語法如下:

class 類名:
多個(≥0)類屬性...
多個(≥0)類方法...

2、類變量和實例變量

類體中、所有函數之外:此范圍定義的變量,稱為類屬性或類變量;
類體中,所有函數之內:以“self.變量名”的方式定義的變量,稱為實例屬性或實例變量;

class Person():
introduce = "大家好!" # 類屬性
def __init__(self, name, age):
self.name = name # 實例屬性
self.age = age # 實例屬性

3、實例方法、類方法和靜態方法

不用任何修改的方法為實例方法;
采用 @classmethod 修飾的方法為類方法;
采用 @staticmethod 修飾的方法為靜態方法。

class Person():
def say(self):
print("正在調用實例方法")
@classmethod
def eat(cls):
print("正在調用類方法")
@staticmethod
def drink():
print("正在調用靜態方法")

4、類對象的創建和調用實例方法

class Person():
def say(self): # 實例方法
print("我是張三")
zhang = Person() # 創建類對象,zhang
""" 類對象調用實例方法的兩種方式: 1、通過類對象名調用實例方法 2、通過類名直接調用實例方法 """
zhang.say()
Person.say(zhang)

5、封裝

如果類中的變量和函數,其名稱以雙下劃線“__”開頭,則該變量(函數)為私有變量(私有函數),從而實現類的封裝。

參考:

https://blog.csdn.net/sinat_38682860/article/details/109560354

6、繼承

實現繼承的類稱為子類,被繼承的類稱為父類(也可稱為基類、超類)。

子類繼承父類時,只需在定義子類時,將父類(可以是多個)放在子類之後的圓括號裡即可。語法格式如下:
(具有多個父類,即為多繼承)

class 類名(父類1, 父類2, ...):
#類定義部分

注意:如果該類沒有顯式指定繼承自哪個類,則默認繼承 object 類。
(object 類是 Python 中所有類的父類,即要麼是直接父類,要麼是間接父類)

class People:
def say(self):
print("我是一個人,名字是:",self.name)
class Animal:
def display(self):
print("人也是高級動物")
#同時繼承 People 和 Animal 類
#其同時擁有 name 屬性、say() 和 display() 方法
class Person(People, Animal):
pass
zhangsan = Person()
zhangsan.name = "張三"
zhangsan.say()
zhangsan.display()

有繼承,就要有重寫。重寫指的是對類中已有方法的內部實現進行修改。

class Bird:
#鳥有翅膀
def isWing(self):
print("鳥有翅膀")
#鳥會飛
def fly(self):
print("鳥會飛")
class Ostrich(Bird):
# 重寫Bird類的fly()方法
def fly(self):
print("鴕鳥不會飛")
# 創建Ostrich對象
ostrich = Ostrich()
# 調用被重寫的方法
ostrich.fly()
# 調用 Bird 類中的 fly() 方法 || 調用未被重寫的方法
Bird.fly(ostrich)

在子類中的構造方法中,調用父類構造方法的方式:使用 super() 函數。但如果涉及多繼承,該函數只能調用第一個直接父類的構造方法。

class People:
def __init__(self, name):
self.name = name
def say(self):
print("我是人,名字為:", self.name)
class Animal:
def __init__(self, food):
self.food = food
def display(self):
print("我是動物,我吃", self.food)
class Person(People, Animal):
# 自定義構造方法
def __init__(self, name, food):
# 調用 People 類的構造方法
super().__init__(name)
# super(Person,self).__init__(name) #執行效果和上一行相同
# People.__init__(self,name)#使用未綁定方法調用 People 類構造方法
# 調用其它父類的構造方法,需手動給 self 傳值
Animal.__init__(self, food)
per = Person("zhangsan", "熟食")
per.say()
per.display()

7、多態

類的多態特性的前提條件:

  • 繼承:多態一定是發生在子類和父類之間;
  • 重寫:子類重寫了父類的方法。
  • 同一變量可能會被先後賦值不同的類對象。
class CLanguage:
def say(self):
print("調用的是 Clanguage 類的say方法")
class CPython(CLanguage):
def say(self):
print("調用的是 CPython 類的say方法")
class CLinux(CLanguage):
def say(self):
print("調用的是 CLinux 類的say方法")
a = CLanguage()
a.say()
a = CPython()
a.say()
a = CLinux()
a.say()

Python 這種由多態衍生出的更靈活的編程機制,被稱為“鴨子模型”或“鴨子類型”。例子如下:

class WhoSay:
def say(self,who):
who.say()
class CLanguage:
def say(self):
print("調用的是 Clanguage 類的say方法")
class CPython(CLanguage):
def say(self):
print("調用的是 CPython 類的say方法")
class CLinux(CLanguage):
def say(self):
print("調用的是 CLinux 類的say方法")
a = WhoSay()
#調用 CLanguage 類的 say() 方法
a.say(CLanguage())
#調用 CPython 類的 say() 方法
a.say(CPython())
#調用 CLinux 類的 say() 方法
a.say(CLinux())

此程序中,通過給 WhoSay 類中的 say() 函數添加一個 who 參數,其內部利用傳入的 who 調用 say() 方法。這意味著,當調用 WhoSay 類中的 say() 方法時,我們傳給 who 參數的是哪個類的實例對象,它就會調用那個類中的 say() 方法。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved