【Python基礎 09】Python高級變量類型

目標

  • 列表
  • 元組
  • 字典
  • 字符串
  • 公共方法
  • 變量高級

知識點回顧

  • Python 中數據類型能夠分爲 數字型非數字型
  • 數字型
    • 整型 (int)
    • 浮點型(float
    • 布爾型(bool
      • True 非 0 數 —— 非零即真
      • False 0
    • 複數型 (complex)
      • 主要用於科學計算,例如:平面場問題、波動問題、電感電容等問題
  • 非數字型
    • 字符串
    • 列表
    • 元組
    • 字典
  • Python 中,全部 非數字型變量 都支持如下特色:
    1. 都是一個 序列 sequence,也能夠理解爲 容器
    2. 取值 []
    3. 遍歷 for in
    4. 計算長度最大/最小值比較刪除
    5. 連接 +重複 *
    6. 切片

01. 列表

1.1 列表的定義

  • List(列表) 是 Python 中使用 最頻繁 的數據類型,在其餘語言中一般叫作 數組
  • 專門用於存儲 一串 信息
  • 列表用 [] 定義,數據 之間使用 , 分隔
  • 列表的 索引0 開始
    • 索引 就是數據在 列表 中的位置編號,索引 又能夠被稱爲 下標

注意:從列表中取值時,若是 超出索引範圍,程序會報錯python

name_list = ["zhangsan", "lisi", "wangwu"]

【Python基礎 09】Python高級變量類型

1.2 列表經常使用操做

  • ipython3 中定義一個 列表,例如:name_list = []
  • 輸入 name_list. 按下 TAB 鍵,ipython 會提示 列表 可以使用的 方法 以下:
In [1]: name_list.
name_list.append   name_list.count    name_list.insert   name_list.reverse
name_list.clear    name_list.extend   name_list.pop      name_list.sort
name_list.copy     name_list.index    name_list.remove
序號 分類 關鍵字 / 函數 / 方法 說明
1 增長 列表.insert(索引, 數據) 在指定位置插入數據
列表.append(數據) 在末尾追加數據
列表.extend(列表2) 將列表2 的數據追加到列表
2 修改 列表[索引] = 數據 修改指定索引的數據
3 刪除 del 列表[索引] 刪除指定索引的數據
列表.remove[數據] 刪除第一個出現的指定數據
列表.pop 刪除末尾數據
列表.pop(索引) 刪除指定索引數據
列表.clear 清空列表
4 統計 len(列表) 列表長度
列表.count(數據) 數據在列表中出現的次數
5 排序 列表.sort() 升序排序
列表.sort(reverse=True) 降序排序
列表.reverse() 逆序、反轉

del 關鍵字(科普)

  • 使用 del 關鍵字(delete) 一樣能夠刪除列表中元素
  • del 關鍵字本質上是用來 將一個變量從內存中刪除的
  • 若是使用 del 關鍵字將變量從內存中刪除,後續的代碼就不能再使用這個變量了
del name_list[1]

在平常開發中,要從列表刪除數據,建議 使用列表提供的方法git

關鍵字、函數和方法(科普)

  • 關鍵字 是 Python 內置的、具備特殊意義的標識符
In [1]: import keyword
In [2]: print(keyword.kwlist)
In [3]: print(len(keyword.kwlist))

關鍵字後面不須要使用括號面試

  • 函數 封裝了獨立功能,能夠直接調用
函數名(參數)

函數須要死記硬背編程

  • 方法 和函數相似,一樣是封裝了獨立的功能
  • 方法 須要經過 對象 來調用,表示針對這個 對象 要作的操做
對象.方法名(參數)

在變量後面輸入 .,而後選擇針對這個變量要執行的操做,記憶起來比函數要簡單不少api

1.3 循環遍歷

  • 遍歷 就是 從頭至尾 依次列表 中獲取數據
    • 循環體內部 針對 每個元素,執行相同的操做
  • Python 中爲了提升列表的遍歷效率,專門提供的 迭代 iteration 遍歷
  • 使用 for 就可以實現迭代遍歷
# for 循環內部使用的變量 in 列表
for name in name_list:

    循環內部針對列表元素進行操做
    print(name)

【Python基礎 09】Python高級變量類型

1.4 應用場景

  • 儘管 Python列表 中能夠 存儲不一樣類型的數據
  • 可是在開發中,更多的應用場景是
    1. 列表 存儲相同類型的數據
    2. 經過 迭代遍歷,在循環體內部,針對列表中的每一項元素,執行相同的操做

02. 元組

2.1 元組的定義

  • Tuple(元組)與列表相似,不一樣之處在於元組的 元素不能修改
    • 元組 表示多個元素組成的序列
    • 元組Python 開發中,有特定的應用場景
  • 用於存儲 一串 信息數據 之間使用 , 分隔
  • 元組用 () 定義
  • 元組的 索引0 開始
    • 索引 就是數據在 元組 中的位置編號
info_tuple = ("zhangsan", 18, 1.75)

建立空元組

info_tuple = ()

元組中 只包含一個元素 時,須要 在元素後面添加逗號

info_tuple = (50, )

【Python基礎 09】Python高級變量類型

2.2 元組經常使用操做

  • ipython3 中定義一個 元組,例如:info = ()
  • 輸入 info. 按下 TAB 鍵,ipython 會提示 元組 可以使用的函數以下:
info.count  info.index

有關 元組經常使用操做 能夠參照上圖練習數組

2.3 循環遍歷

  • 取值 就是從 元組 中獲取存儲在指定位置的數據
  • 遍歷 就是 從頭至尾 依次元組 中獲取數據
# for 循環內部使用的變量 in 元組
for item in info:

    循環內部針對元組元素進行操做
    print(item)
  • Python 中,可使用 for 循環遍歷全部非數字型類型的變量:列表元組字典 以及 字符串
  • 提示:在實際開發中,除非 可以確認元組中的數據類型,不然針對元組的循環遍歷需求並非不少

2.4 應用場景

  • 儘管可使用 for in 遍歷 元組
  • 可是在開發中,更多的應用場景是:
    • 函數的 參數 和 返回值,一個函數能夠接收 任意多個參數,或者 一次返回多個數據
    • 有關 函數的參數 和 返回值,在後續 函數高級 給你們介紹
    • 格式字符串,格式化字符串後面的 () 本質上就是一個元組
    • 讓列表不能夠被修改,以保護數據安全
info = ("zhangsan", 18)

print("%s 的年齡是 %d" % info)

元組和列表之間的轉換

  • 使用 list 函數能夠把元組轉換成列表
list(元組)
  • 使用 tuple 函數能夠把列表轉換成元組
tuple(列表)

03. 字典

3.1 字典的定義

  • dictionary(字典) 是 除列表之外 Python 之中 最靈活 的數據類型
  • 字典一樣能夠用來 存儲多個數據
    • 一般用於存儲 描述一個 物體 的相關信息
  • 和列表的區別
    • 列表有序 的對象集合
    • 字典無序 的對象集合
  • 字典用 {} 定義
  • 字典使用 鍵值對 存儲數據,鍵值對之間使用 , 分隔
    • key 是索引
    • value 是數據
    • 之間使用 : 分隔
    • 鍵必須是惟一的
    • 能夠取任何數據類型,但 只能使用 字符串數字元組
xiaoming = {"name": "小明",
            "age": 18,
            "gender": True,
            "height": 1.75}

【Python基礎 09】Python高級變量類型

3.2 字典經常使用操做

  • ipython3 中定義一個 字典,例如:xiaoming = {}
  • 輸入 xiaoming. 按下 TAB 鍵,ipython 會提示 字典 可以使用的函數以下:
In [1]: xiaoming.
xiaoming.clear       xiaoming.items       xiaoming.setdefault
xiaoming.copy        xiaoming.keys        xiaoming.update
xiaoming.fromkeys    xiaoming.pop         xiaoming.values
xiaoming.get         xiaoming.popitem

有關 字典經常使用操做 能夠參照上圖練習安全

3.3 循環遍歷

  • 遍歷 就是 依次字典 中獲取全部鍵值對
# for 循環內部使用的 `key 的變量` in 字典
for k in xiaoming:

    print("%s: %s" % (k, xiaoming[k]))

提示:在實際開發中,因爲字典中每個鍵值對保存數據的類型是不一樣的,因此針對字典的循環遍歷需求並非不少app

3.4 應用場景

  • 儘管可使用 for in 遍歷 字典
  • 可是在開發中,更多的應用場景是:
    • 使用 多個鍵值對,存儲 描述一個 物體 的相關信息 —— 描述更復雜的數據信息
    • 多個字典 放在 一個列表 中,再進行遍歷,在循環體內部針對每個字典進行 相同的處理
card_list = [{"name": "張三",
              "qq": "12345",
              "phone": "110"},
             {"name": "李四",
              "qq": "54321",
              "phone": "10086"}
             ]

04. 字符串

4.1 字符串的定義

  • 字符串 就是 一串字符,是編程語言中表示文本的數據類型
  • 在 Python 中可使用 一對雙引號 " 或者 一對單引號 ' 定義一個字符串
    • 雖然可使用 \" 或者 \' 作字符串的轉義,可是在實際開發中:
    • 若是字符串內部須要使用 ",可使用 ' 定義字符串
    • 若是字符串內部須要使用 ',可使用 " 定義字符串
  • 可使用 索引 獲取一個字符串中 指定位置的字符,索引計數從 0 開始
  • 也可使用 for 循環遍歷 字符串中每個字符

大多數編程語言都是用 " 來定義字符串編程語言

string = "Hello Python"

for c in string:
    print(c)

【Python基礎 09】Python高級變量類型

4.2 字符串的經常使用操做

  • ipython3 中定義一個 字符串,例如:hello_str = ""
  • 輸入 hello_str. 按下 TAB 鍵,ipython 會提示 字符串 可以使用的 方法 以下:
In [1]: hello_str.
hello_str.capitalize    hello_str.isidentifier  hello_str.rindex
hello_str.casefold      hello_str.islower       hello_str.rjust
hello_str.center        hello_str.isnumeric     hello_str.rpartition
hello_str.count         hello_str.isprintable   hello_str.rsplit
hello_str.encode        hello_str.isspace       hello_str.rstrip
hello_str.endswith      hello_str.istitle       hello_str.split
hello_str.expandtabs    hello_str.isupper       hello_str.splitlines
hello_str.find          hello_str.join          hello_str.startswith
hello_str.format        hello_str.ljust         hello_str.strip
hello_str.format_map    hello_str.lower         hello_str.swapcase
hello_str.index         hello_str.lstrip        hello_str.title
hello_str.isalnum       hello_str.maketrans     hello_str.translate
hello_str.isalpha       hello_str.partition     hello_str.upper
hello_str.isdecimal     hello_str.replace       hello_str.zfill
hello_str.isdigit       hello_str.rfind

提示:正是由於 python 內置提供的方法足夠多,才使得在開發時,可以針對字符串進行更加靈活的操做!應對更多的開發需求!ide

1) 判斷類型 - 9

方法 說明
string.isspace() 若是 string 中只包含空格,則返回 True
string.isalnum() 若是 string 至少有一個字符而且全部字符都是字母或數字則返回 True
string.isalpha() 若是 string 至少有一個字符而且全部字符都是字母則返回 True
string.isdecimal() 若是 string 只包含數字則返回 True,全角數字
string.isdigit() 若是 string 只包含數字則返回 True,全角數字\u00b2
string.isnumeric() 若是 string 只包含數字則返回 True,全角數字漢字數字
string.istitle() 若是 string 是標題化的(每一個單詞的首字母大寫)則返回 True
string.islower() 若是 string 中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是小寫,則返回 True
string.isupper() 若是 string 中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是大寫,則返回 True

2) 查找和替換 - 7

方法 說明
string.startswith(str) 檢查字符串是不是以 str 開頭,是則返回 True
string.endswith(str) 檢查字符串是不是以 str 結束,是則返回 True
string.find(str, start=0, end=len(string)) 檢測 str 是否包含在 string 中,若是 start 和 end 指定範圍,則檢查是否包含在指定範圍內,若是是返回開始的索引值,不然返回 -1
string.rfind(str, start=0, end=len(string)) 相似於 find(),不過是從右邊開始查找
string.index(str, start=0, end=len(string)) 跟 find() 方法相似,不過若是 str 不在 string 會報錯
string.rindex(str, start=0, end=len(string)) 相似於 index(),不過是從右邊開始
string.replace(old_str, new_str, num=string.count(old)) 把 string 中的 old_str 替換成 new_str,若是 num 指定,則替換不超過 num 次

3) 大小寫轉換 - 5

方法 說明
string.capitalize() 把字符串的第一個字符大寫
string.title() 把字符串的每一個單詞首字母大寫
string.lower() 轉換 string 中全部大寫字符爲小寫
string.upper() 轉換 string 中的小寫字母爲大寫
string.swapcase() 翻轉 string 中的大小寫

4) 文本對齊 - 3

方法 說明
string.ljust(width) 返回一個原字符串左對齊,並使用空格填充至長度 width 的新字符串
string.rjust(width) 返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串
string.center(width) 返回一個原字符串居中,並使用空格填充至長度 width 的新字符串

5) 去除空白字符 - 3

方法 說明
string.lstrip() 截掉 string 左邊(開始)的空白字符
string.rstrip() 截掉 string 右邊(末尾)的空白字符
string.strip() 截掉 string 左右兩邊的空白字符

6) 拆分和鏈接 - 5

方法 說明
string.partition(str) 把字符串 string 分紅一個 3 元素的元組 (str前面, str, str後面)
string.rpartition(str) 相似於 partition() 方法,不過是從右邊開始查找
string.split(str="", num) 以 str 爲分隔符拆分 string,若是 num 有指定值,則僅分隔 num + 1 個子字符串,str 默認包含 '\r', '\t', '\n' 和空格
string.splitlines() 按照行('\r', '\n', '\r\n')分隔,返回一個包含各行做爲元素的列表
string.join(seq) 以 string 做爲分隔符,將 seq 中全部的元素(的字符串表示)合併爲一個新的字符串

4.3 字符串的切片

  • 切片 方法適用於 字符串列表元組
    • 切片 使用 索引值 來限定範圍,從一個大的 字符串切出 小的 字符串
    • 列表元組 都是 有序 的集合,都可以 經過索引值 獲取到對應的數據
    • 字典 是一個 無序 的集合,是使用 鍵值對 保存數據

【Python基礎 09】Python高級變量類型

字符串[開始索引:結束索引:步長]

注意

  1. 指定的區間屬於 左閉右開[開始索引, 結束索引)
    • 起始 位開始,到 結束位的前一位 結束(不包含結束位自己)
  2. 從頭開始,開始索引 數字能夠省略,冒號不能省略
  3. 到末尾結束,結束索引 數字能夠省略,冒號不能省略
  4. 步長默認爲 1,若是連續切片,數字和冒號均可以省略

索引的順序和倒序

  • 在 Python 中不只支持 順序索引,同時還支持 倒序索引
  • 所謂倒序索引就是 從右向左 計算索引
    • 最右邊的索引值是 -1,依次遞減

演練需求

    1. 截取從 2 ~ 5 位置 的字符串
    1. 截取從 2 ~ 末尾 的字符串
    1. 截取從 開始 ~ 5 位置 的字符串
    1. 截取完整的字符串
    1. 從開始位置,每隔一個字符截取字符串
    1. 從索引 1 開始,每隔一個取一個
    1. 截取從 2 ~ 末尾 - 1 的字符串
    1. 截取字符串末尾兩個字符
    1. 字符串的逆序(面試題)

答案

num_str = "0123456789"

# 1. 截取從 2 ~ 5 位置 的字符串
print(num_str[2:6])

# 2. 截取從 2 ~ `末尾` 的字符串
print(num_str[2:])

# 3. 截取從 `開始` ~ 5 位置 的字符串
print(num_str[:6])

# 4. 截取完整的字符串
print(num_str[:])

# 5. 從開始位置,每隔一個字符截取字符串
print(num_str[::2])

# 6. 從索引 1 開始,每隔一個取一個
print(num_str[1::2])

# 倒序切片
# -1 表示倒數第一個字符
print(num_str[-1])

# 7. 截取從 2 ~ `末尾 - 1` 的字符串
print(num_str[2:-1])

# 8. 截取字符串末尾兩個字符
print(num_str[-2:])

# 9. 字符串的逆序(面試題)
print(num_str[::-1])

05. 公共方法

5.1 Python 內置函數

Python 包含了如下內置函數:

函數 描述 備註
len(item) 計算容器中元素個數
del(item) 刪除變量 del 有兩種方式
max(item) 返回容器中元素最大值 若是是字典,只針對 key 比較
min(item) 返回容器中元素最小值 若是是字典,只針對 key 比較
cmp(item1, item2) 比較兩個值,-1 小於/0 相等/1 大於 Python 3.x 取消了 cmp 函數

注意

  • 字符串 比較符合如下規則: "0" < "A" < "a"

5.2 切片

描述 Python 表達式 結果 支持的數據類型
切片 "0123456789"[::-2] "97531" 字符串、列表、元組
  • 切片 使用 索引值 來限定範圍,從一個大的 字符串切出 小的 字符串
  • 列表元組 都是 有序 的集合,都可以 經過索引值 獲取到對應的數據
  • 字典 是一個 無序 的集合,是使用 鍵值對 保存數據

5.3 運算符

運算符 Python 表達式 結果 描述 支持的數據類型
+ [1, 2] + [3, 4] [1, 2, 3, 4] 合併 字符串、列表、元組
* ["Hi!"] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重複 字符串、列表、元組
in 3 in (1, 2, 3) True 元素是否存在 字符串、列表、元組、字典
not in 4 not in (1, 2, 3) True 元素是否不存在 字符串、列表、元組、字典
> >= == < <= (1, 2, 3) < (2, 2, 3) True 元素比較 字符串、列表、元組

注意

  • in 在對 字典 操做時,判斷的是 字典的鍵
  • innot in 被稱爲 成員運算符

成員運算符

成員運算符用於 測試 序列中是否包含指定的 成員

運算符 描述 實例
in 若是在指定的序列中找到值返回 True,不然返回 False 3 in (1, 2, 3) 返回 True
not in 若是在指定的序列中沒有找到值返回 True,不然返回 False 3 not in (1, 2, 3) 返回 False

注意:在對 字典 操做時,判斷的是 字典的鍵

5.4 完整的 for 循環語法

  • Python 中完整的 for 循環 的語法以下:
for 變量 in 集合:

    循環體代碼
else:
    沒有經過 break 退出循環,循環結束後,會執行的代碼

應用場景

  • 迭代遍歷 嵌套的數據類型時,例如 一個列表包含了多個字典
  • 需求:要判斷 某一個字典中 是否存在 指定的 值
    • 若是 存在,提示而且退出循環
    • 若是 不存在,在 循環總體結束 後,但願 獲得一個統一的提示
students = [
    {"name": "阿土",
     "age": 20,
     "gender": True,
     "height": 1.7,
     "weight": 75.0},
    {"name": "小美",
     "age": 19,
     "gender": False,
     "height": 1.6,
     "weight": 45.0},
]

find_name = "阿土"

for stu_dict in students:

    print(stu_dict)

    # 判斷當前遍歷的字典中姓名是否爲find_name
    if stu_dict["name"] == find_name:
        print("找到了")

        # 若是已經找到,直接退出循環,就不須要再對後續的數據進行比較
        break

else:
    print("沒有找到")

print("循環結束")
相關文章
相關標籤/搜索