Python快速入門(六)高級函數2:字典、字符串、for語法
前言:繼續上一章《Python快速入門(五)高級函數1:列表、del關鍵字、元組》的高級函數,這次主要是字典的定義、基本使用、遍歷,字符串的定義、遍歷、統計、判斷、查找和替換、文本對齊、拆分和拼接等
1.字典的定義
- 字典:是一個無序的數據集合,使用print函數輸出字典時,通常輸出的順序和定義的順序是不一致的。
代碼:
fly = {"name": "fly",
"age": 18,
"gender": True,
"height": 180,
"weight": 70.5}
print(fly)
輸出:
2.字典的基本使用
- 主要分取值、增加/修改、刪除。
- 注意1:在取值的時候,如果指定的key不存在,程序會報錯!
- 注意2:在增加/修改的時候,如果key不存在,會新增鍵值對如果key存在,會修改已經存在的鍵值對
- 注意3:在刪除指定鍵值對的時候,如果指定的key不存在,程序會報錯.
代碼:
fly_dict = {"name": "飛"}
# 取值
print(fly_dict["name"])
# 增加/修改
fly_dict["age"] = 18
fly_dict["name"] = "小飛"
print(fly_dict)
# 刪除
fly_dict.pop("name")
print(fly_dict)
輸出:
3.字典的其他操作
- 注意:如果被合併的字典中包含已經存在的鍵值對,會覆蓋原有的鍵值對
代碼:
fly_dict = {"name": "飛", "age": 20}
# 統計鍵值對數量
print(len(fly_dict))
# 合併字典
temp_dict = {"height": 180.5, "age": 20}
fly_dict.update(temp_dict)
print(fly_dict)
# 清空字典
fly_dict.clear()
print(fly_dict)
輸出:
4.字典的遍歷
- 注意:迭代遍歷字典,變量k是每一次循環中,獲取到的鍵值對的key。
代碼:
fly_dict = {"name": "飛","qq": "123456","phone": "10086"}
for k in fly_dict:
print("%s---%s" % (k, fly_dict[k]))
輸出:
5.字典的應用場景
- 使用多個鍵值對,存儲描述一個物體的相關信息,可以描述更復雜的數據信息。
- 將多個字典 放在一個列表中然後再進行遍歷。
代碼:
card_list = [
{"name": "fly1",
"qq": "12345666",
"phone": "10086"},
{"name": "fly2",
"qq": "54321000",
"phone": "10010"}
]
for card_info in card_list:
print(card_info)
輸出:
6.字符串定義和遍歷
代碼:
str1 = "hello python"
print(str1)
print(str1[2])
for char in str1:
print(char)
輸出:
7.字符串統計
- 注意:如果使用index方法傳遞的子字符串不存在,程序會報錯!
代碼:
hello_str = "hello hello"
# 統計字符串長度
print(len(hello_str))
# 統計某一個小(子)字符串出現的次數
print(hello_str.count("llo"))
print(hello_str.count("abc"))
# 某一個子字符串出現的位置
print(hello_str.index("llo"))
輸出:
8.字符串判斷
代碼:
# 判斷空白字符
space_str = " \t\n\r"
print(space_str.isspace())
# 中文數字
num_str = "一千零一"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
輸出:
9.字符串查找和替換
代碼:
hello_str = "hello world"
# 判斷是否以指定字符串開始
print(hello_str.startswith("Hello"))
# 判斷是否以指定字符串結束
print(hello_str.endswith("world"))
# 查找指定字符串
# 注意:index同樣可以查找指定的字符串在大字符串中的索引
print(hello_str.find("llo"))
# 注意:index如果指定的字符串不存在,會報錯
# 注意:find如果指定的字符串不存在,會返回-1
print(hello_str.find("abc"))
# 替換字符串
# 注意:replace方法執行完成之後,會返回一個新的字符串
# 注意:不會修改原有字符串的內容
print(hello_str.replace("world", "python"))
print(hello_str)
輸出:
10.字符串文本對齊
- 先使用strip方法去除字符串中的空白字符
- 再使用center方法居中顯示文本
代碼:
poem = ["\t\n登鸛雀樓",
"王之渙",
"白日依山盡\t\n",
"黃河入海流",
"欲窮千里目",
"更上一層樓"]
for poem_str in poem:
print("|%s|" % poem_str.strip().center(10, " "))
輸出:
11.字符串拆分和拼接
代碼:
poem_str = "登鸛雀樓\t 王之渙 \t 白日依山盡 \t \n 黃河入海流 \t\t 欲窮千里目 \t\t\n更上一層樓"
print(poem_str)
# 拆分字符串
poem_list = poem_str.split()
print(poem_list)
# 合併字符串
result = " ".join(poem_list)
print(result)
輸出:
12.for語法
- 注意:如果循環體內部使用break退出了循環,else 下方的代碼就不會被執行。
代碼:
for num in [1, 2, 3, 4]:
print(num)
if num == 3:
break
else:
print("不會執行!")
print("循環結束")
輸出:
13.遍歷字典的列表
代碼:
students = [
{"name": "fly1"},
{"name": "fly2"}
]
# 在學員列表中搜索指定的姓名
find_name = "fly"
for stu_dict in students:
print(stu_dict)
if stu_dict["name"] == find_name:
print("找到---%s" % find_name)
# 如果已經找到,應該直接退出循環,而不再遍歷後續的元素
break
else:
print("抱歉沒有找到 %s" % find_name)
print("循環結束")
輸出:
結束!下節再見!!!