3. 字串、列表、元組、字典
3.1 for迴圈
for 臨時變數 in 列表或者字串等可迭代物件:
迴圈滿足條件時執行的程式碼
3.2 break和continue
- 1 break 立刻結束break所在的迴圈
- for 迴圈中
- while迴圈中
- 2 continue 用來結束本次迴圈,緊接著執行下一次的迴圈
- for 迴圈中
- while迴圈中
break/continue只能用在迴圈中,除此以外不能單獨使用
break/continue在巢狀迴圈中,只對最近的一層迴圈起作用
3.3字串介紹
雙引號或者單引號中的資料,就是字串
3.4字串輸出
3.5字串輸入
3.6下標和切片
- 1 下標索引
python中下標從 0 開始
- 2 切片
-
切片是指對操作的物件擷取其中一部分的操作。字串、列表、元組都支援切片操作。
-
切片的語法:[起始:結束:步長]
注意:選取的區間從"起始"位開始,到"結束"位的前一位結束(不包含結束位本身),步長表示選取間隔
- 字串名[m:n:k] 來表示從下標為m到下標為n,每k個取一個
索引是通過下標取某一個元素
切片是通過下標去某一段元素
str1 = "hello world" # print(str1[4]) # o # print(str1[2:7]) # llo w # print(str1[:3]) # hel # 第一個m省略表示從第一個元素開始取 # print(str1[3:]) # lo world # n省略表示從下標為m開始取到最後一個元素 # print(str1[:]) # "hello world" # print(str1) # "hello world" # print(str1[::2]) # hlowrd # print(str1[::-1]) # dlrow olleh 將字串進行反轉,逆轉,逆序,倒序 # print(str1[-3]) # 取倒數第三個字元 # print(str1[2:-3]) # llo wo # print(str1[-8:8]) # lo wo
3.7字串常見操作
mystr = ‘hello world itcast and itcastcpp’
-
mystr.find(“it”) 在mystr字串中找"it"這個子串,找到就返回第一次出現時候的下標,找不到返回-1
-
mystr.index(“it”) 在mystr字串中找"it"這個子串,找到就返回第一次出現時候的下標,找不到則報錯
-
mystr.count(“it”) 在mystr字串中找"it"這個子串,找到就返回出現的次數,找不到返回0
-
mystr.isdigit() 判斷mystr字串是不是一個純數字的字串,如果是返回True,否則返回False
-
mystr.isalpha() 判斷mystr字串是不是一個純字母的字串,如果是返回True,否則返回False
-
mystr.isspace() 判斷mystr字串是不是一個純空格的字串,如果是返回True,否則返回False
-
mystr.startswith(“ab”) 判斷mystr字串是不是以子串ab開始的,如果是返回True,否則返回False
-
mystr.endswith(“ab”) 判斷mystr字串是不是以子串ab結尾的,如果是返回True,否則返回False
-
mystr.replace(子串1, 字串2) 返回一個新字串,把mystr中的子串1,全部替換成字串2
-
mystr.strip() 返回一個新字串,去掉mystr字串中的前後空格
-
mystr.lstrip() 返回一個新字串,去掉mystr字串中的前空格
-
mystr.rstrip() 返回一個新字串,去掉mystr字串中的後空格
-
mystr.split(子串) 返回一個列表,把mystr按照子串進行分割成若干部分,每個部分作為列表中的每個元素,這個子串最終消失
-
mystr.partition(子串) 返回一個元組,把mystr按照子串進行分割成3個部分,子串作為第2個元素,子串前面的字串作為元組第一個元素,子串後面的字串作為元組第3個元素
-
mystr.upper() 返回一個新字串,把字串中所有的字母變成大寫字母
-
mystr.lower() 返回一個新字串,把字串中所有的字母變成小寫字母
-
mystr.capitalize() 返回一個新字串,把字串中第一個字母轉換成大寫,其餘小寫
-
mystr.title() 返回一個新字串,把字串中每個單詞第一個字母轉換成大寫,其餘小寫
-
mystr.swapcase() 返回一個新字串,把字串中字母進行大小寫互換
-
mystr.center(100) 返回一個新字串,讓mystr在100個字元的長度中做居中效果
-
len(mystr) 返回出字串中字元的個數
mystr = 'hello world itcast and itcastcpp'
# print(mystr.find("xxx"))
# print(mystr.index("xxx"))
# print(mystr.count("ito"))
# print(mystr.split(" ")) # ['hello', 'world', 'itcast', 'and', 'itcastcpp']
# print(mystr.split("it")) # ['hello world ', 'cast and ', 'castcpp']
# file_name = "xxx.html"
# print(file_name.endswith(".py"))
lines = "GET /index.html 200OK"
# print(lines.split(" "))
lines = "hello "
print(len(lines))
3.8 列表介紹
namesList = ['xiaoWang','xiaoZhang','xiaoHua']
比C語言的陣列強大的地方在於列表中的元素可以是不同型別的
3.9 列表的迴圈遍歷
- 1 使用for迴圈
- 2 使用while迴圈
name_list = ["zhangsan", "lisi", "wangwu", "zhaoliu"] # 定義一個列表
# print(name_list)
# print(type(name_list)) # <class 'list'>
# print(name_list[1]) # 獲取到下標為1的元素
for i in name_list: # for迴圈遍歷這個列表
print(i)
# i = 0
# while i < 4: # while迴圈遍歷這個列表
# print(name_list[i])
# i += 1
### 3.10 列表的常用操作 ###
- 增
- append
- extend
- insert
- 改
- 查
- in not in
- index count
- 刪 remove del clear
- 排序 sort reverse
name_list = ["zhangsan", "lisi", "wangwu", "zhaoliu"]
print(name_list)
# 增
# name_list.append("liqi") # 在列表最後追加一個元素
# name_list.insert(1, "liqi") # 在下標為1的位置插入一個數據"liqi"
# name_list.extend(["liqi", "baba"])
# name_list.append(["liqi", "baba"]) # ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', ['liqi', 'baba']]
# print(name_list)
# 刪除
# name_list.remove("lisi") # 刪除"lisi"這個元素
# aaa = name_list.pop(2) # 如果沒有引數預設刪除最後一個元素, 如果傳了一個數字,表示刪除這個下標所在的元素, 這個pop功能會返回(得到)這個刪除的資料
# print(name_list)
# print(aaa)
# name_list.clear() # 清空列表中所有資料
# print(name_list)
del name_list[2]
print(name_list)
name_list = ["zhangsan", "lisi", "wangwu", "zhaoliu"]
print(name_list)
# 改
# name_list[1] = "liqi"
# print(name_list)
# 查
# print(name_list[2]) # wangwu
# print("liqi" in name_list) # False
# print("liqi" not in name_list) # True
#
# if "liqi" not in name_list:
# ....
# 問:"lisi"在列表中出現多少次 name_list.count("lisi")
# print(name_list.count("lisi"))
# 問:"lisi"在列表中的下標是多少? name_list.index("lisi")
# print(name_list.index("lisi"))
nums = [20, 99, 1020, -9, 6, 1]
# print(nums) # [20, 99, 1020, -9, 6, 1]
# nums.sort() # 排序,從小到大排
# print(nums) # [-9, 1, 6, 20, 99, 1020]
# nums.reverse() # 列表逆轉、倒序
# print(nums) # [1020, 99, 20, 6, 1, -9]
# print(nums[::-1])
# print(nums[:3])
3.11 列表的的巢狀
"""
[ [], [] , []]
一個學校,有3個辦公室,現在有8位老師等待工位的分配,請編寫程式,完成隨機的分配
"""
import random
offices = [[], [], []] # 為什麼裡面每一個辦公室也是一個列表?因為:一個辦公室可以進入多個老師
teachers = ["A", "B", "C", "D", "E", "F", "G", "H"]
for i in teachers: # i就是每一個老師
offices[random.randint(0, 2)].append(i)
# print(offices)
# [['C', 'F', 'G'], ['A', 'D', 'E', 'H'], ['B']]
for i in offices: # print要列印多少次取決於多少辦公室,所以應該遍歷辦公室列表
# i是offices中的每一個小列表,即每一個辦公室
# 提示: i是offices的元素,就可以通過.index()這個功能來求到i所在的下標
print("第%s間辦公室的老師有:" % (offices.index(i)+1), end="")
for j in i: # i是offices中的每一個小列表,即每一個辦公室
# j 是i列表中的每一個老師
print(j, end="\t")
# 裡層的這個for一旦執行完畢說明老師列印完畢了,說明一行已經結束
print()
3.12 元組
Python的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,列表使用方括號
訪問 count index
"""
元組作用:展示多個數據
特點: 元組元素不可修改,(不能新增、刪除、修改資料)
tup3 = (100,)
"""
tup = (10, 20, 30, 40, "abc", 40, [100, 200, 300])
# print(tup, type(tup))
# 查:
# print(tup[1])
# print(40 in tup)
# print(40 not in tup)
# print(tup.count(40))
# print(tup.index(40))
# tup[1] = 300 # 報錯
# print(tup[6]) # [100, 200, 300]
# print(tup[6][0]) # 100
# tup[6][0] = 10000
# print(tup) # (10, 20, 30, 40, 'abc', 40, [10000, 200, 300])
# print(100 in tup) # False
# print(100 in tup[6]) # True
tup2 = (100)
print(tup2, type(tup2)) # 100 <class 'int'>
tup3 = (100,)
print(tup3, type(tup3)) # (100,) <class 'tuple'>
3.13 字典介紹
3.14 字典的常見操作1
- 檢視元素
- 修改元素
- 增加元素
- 刪除元素
- del
- clear
# list1 = [27, "python", "AI"]
#
# print(list1["job"])
dic = {"age": 27, "job": "AI", "name": "python"}
print(dic, type(dic))
# 查
# print(dic["name"]) # python
# print(dic["age"]) # 27
# print(dic["age1"]) # 報錯
# print(dic.get("name")) # python
# print(dic.get("age1")) # None
# 刪除
del dic["age"]
print(dic) # {'job': 'AI', 'name': 'python'}
# 新增
dic["age"] = 28
print(dic)
# 修改
dic["age"] = 29
print(dic)
3.15 字典的常見操作2
- lens()
- keys
- values
- items
"""
{"name": "python", "age": 27, "job": "AI"}
{鍵:值,鍵:值,鍵:值}
{key: value, key: value, key: value}
如何獲取字典中的某個值?
字典名[鍵名]
鍵名的資料型別可以是:字串, 數字, 元組
值可以是其他的任意資料
"""
# list1 = [27, "python", "AI"]
#
# print(list1["job"])
dic = {(10, 20): 27, "job": "AI", "name": "python"}
print(dic, type(dic))
print(dic[(10, 20)])
3.16 字典的遍歷
通過for … in … 我們可以遍歷字串、列表、元組、字典等
- 遍歷key
- 遍歷value
- 遍歷元素
- 遍歷key-value鍵值對
dic = {"age": 27, "job": "AI", "name": "python"}
# for i in dic:
# print(i)
# for i in dic.keys(): # 遍歷字典的鍵
# print(i)
# for i in dic.values(): # 遍歷字典的值
# print(i)
# for i in dic.items(): # 遍歷字典的鍵值對
# print(i) # i就是每一個鍵值對組成的元組
dic = {"age": 27, "job": "AI", "name": "python"}
for key, value in dic.items(): # 遍歷字典的鍵值對
print(key) # key就是每一個鍵
print(value) # value就是每一個值
# a, b = (10, 20) # 拆包
# print(a)
# print(b)
- enumerate()
enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。
chars = ['a', 'b', 'c', 'd']
for i, chr in enumerate(chars):
print i, chr
結果:
0 a
1 b
2 c
3 d
3.17 判斷是否是閏年
"""
判斷是否是閏年
2、請實現一個判斷使用者輸入的年份是否是閏年的程式
提示:
1.能被400整除的年份 if num % 400 == 0:
2.能被4整除,同時不能被100整除的年份
以上2種方法滿足一種即為閏年
"""
num = int(input("請輸入一個年份"))
if num % 400 == 0 or (num % 4 == 0 and num % 100 != 0):
print("%s是閏年" % num)
else:
print("%s是平年" % num)
3.18 公共方法
- 運算子
- python內建函式
- cmp
- len
- max
- min
- del
- 多維列表/元祖訪問的示例