Python全棧之字符串和列表相關操作

1. format格式化_填充符號使用

1.1 format格式化

字符串的格式化format

# (1)順序傳參
"""{}是format中的占位符"""
strvar = "{}向{}開瞭一槍,飲蛋而亡".format("趙沈陽","需保障")
print(strvar)
# (2)索引傳參
strvar = "{1}向{0}開瞭一槍,飲蛋而亡".format("趙沈陽","需保障")
print(strvar)
# (3)關鍵字傳參
strvar = "{who1}摸瞭{who2}一下,回頭一巴掌".format(who1="王偉",who2="馬春妮")
strvar = "{who1}摸瞭{who2}一下,回頭一巴掌".format(who1="馬春妮",who2="王偉")
print(strvar)
# (4)容器類型數據(列表或元祖)傳參
# 方法一
strvar = "{0[0]}摸瞭{1[1]}一下,嘿嘿一笑,有戲".format(["趙蜂擁","趙世超","楊元濤"] , ("王雨涵","王同培"))
print(strvar)
# 方法二(推薦)
strvar = "{group1[0]}摸瞭{group2[1]}一下,嘿嘿一笑,有戲".format(group1=["趙蜂擁","趙世超","楊元濤"] , group2 = ("王雨涵","王同培"))
print(strvar)
# 方法三(推薦) 註意一.如果該容器是字典,通過鍵取值時,不需要加引號  註意二.通過下標取值時,不能使用負號(逆向索引)
strvar = "{group1[zfy]}摸瞭{group2[-1]}一下,嘿嘿一笑,有戲".format(group1={"zfy":"趙蜂擁","zsc":"趙世超"} , group2 = ("王雨涵","王同培"))
print(strvar)

1.2 format的填充符號的使用

format的填充符號的使用( ^ > < )

"""
^ 原字符串居中顯示
> 原字符串居右顯示
< 原字符串居左顯示
{who:*^10}
* : 填充的符號
^ : 原字符串居中顯示
10: 原字符串長度 + 填充符號的長度 = 10
"""
strvar = "{who:*^10}去長春長生醫藥公司,{do:>>10},感覺{feel:!<10}".format(who="李亞峰",do="紮疫苗",feel="血槽被掏空")
print(strvar)

# (6)進制轉換等特殊符號的使用( :d :f :s :, )
# :d 整型占位符 (強制要求類型是整型)
strvar = "劉一峰昨天晚上買瞭{:d}個花露水泡腳".format(9)
print(strvar)
# :3d 占3位,不夠三位拿空格來補位(原字符串居右)
strvar = "劉一峰昨天晚上買瞭{:3d}個花露水泡腳".format(9)
print(strvar)
strvar = "劉一峰昨天晚上買瞭{:<3d}個花露水泡腳".format(9)
print(strvar)
strvar = "劉一峰昨天晚上買瞭{:^3d}個花露水泡腳".format(9)
print(strvar)
# :f 浮點型占位符 (強制要求類型是浮點型) 默認保留小數6位
strvar = "王雨涵畢業之後的薪資是{:f}".format(9.9)
print(strvar)
# :.2f 小數點後保留2位,存在四舍五入
strvar = "王雨涵畢業之後的薪資是{:.2f}".format(9.188888)
print(strvar)
# :s 字符串占位符
strvar = "{:s}".format("楊元濤真帥")
print(strvar)
# :, 金錢占位符
strvar = "{:,}".format(12345678)
print(strvar)
# 綜合案例
strvar = "{:s}開工資{:.2f}元,買瞭{:d}個蘭博基尼".format("孫堅",300000.12345,10)
print(strvar)

2. 字符串相關的方法

字符串的相關函數

# *capitalize 字符串首字母大寫 
strvar = "how are you"
res = strvar.capitalize()
print(res)
# *title 每個單詞的首字母大寫 
strvar = "how old are you"
res = strvar.title()
print(res)
# *upper 將所有字母變成大寫
strvar = "How Old Are You"
res = strvar.upper()
print(res)
# *lower 將所有字母變成小寫 
res = strvar.lower()
print(res)
# *swapcase 大小寫互換 
strvar = "How old Are You"
res = strvar.swapcase()
print(res)
# *len 計算字符串的長度 
strvar = "python32真熱"
res = len(strvar)
print(res)
# *count 統計字符串中某個元素的數量 
"""count(字符,[開始值,結束值])"""
strvar = "真熱真熱呀"
# res = strvar.count("真")     # 2
# res = strvar.count("熱",2)   # 1
# res = strvar.count("熱",2,3) # 隻有真這個字符 沒有熱
print(res)
# *find 查找某個字符串第一次出現的索引位置  (推薦)
"""find(字符,[開始值,結束值])"""
strvar = "To be or not to be that is a question"
res = strvar.find("to")
res = strvar.find("be",4)
# 如果find 返回的是 -1 代表沒找到
res = strvar.find("be",4,10) # 4 ~ 9
print(res)
# *index 與 find 功能相同 find找不到返回-1,index找不到數據直接報錯
"""
res = strvar.index("be",4,10) 
print(res)
"""
# *startswith 判斷是否以某個字符或字符串為開頭 
"""
startswith(字符,[開始值,結束值])
endswith(字符,[開始值,結束值])
"""
strvar = "To be or not to be that is a question"
res = strvar.startswith("To")
res = strvar.startswith("To",10)
print(res)
# *endswith 判斷是否以某個字符或字符串結尾 
res = strvar.endswith("question")
res = strvar.endswith("is",-14,-11) #  is
print(res)

# ### is系列
# *isupper 判斷字符串是否都是大寫字母 
strvar = "HOW  A  YOU"
res = strvar.isupper()
print(res)
# *islower 判斷字符串是否都是小寫字母 
strvar = "asdf - as"
res = strvar.islower()
print(res)
# *isdecimal 檢測字符串是否以數字組成  必須是純數字
strvar = "abcdefg"
strvar = "2134234.123"
strvar = "2134234"
res = strvar.isdecimal()
print(res)

# *split 按某字符將字符串分割成列表(默認字符是空格)  ***
strvar = "you can you up no can no bb"
lst = strvar.split()
strvar = "you#can#you#up#no#can#no#bb"
lst = strvar.split("#")
print(lst)
# *join  按某字符將列表拼接成字符串(容器類型都可)    ***
lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
strvar = " ".join(lst)
strvar = "#".join(lst)
print(strvar)
# *replace 把字符串的舊字符換成新字符  ***
"""字符串.replace('舊字符','新字符'[, 限制替換的次數])"""
strvar = "范冰冰愛不愛我,愛我,不愛我,愛我,不愛我"
res = strvar.replace("不愛我","愛我")
# 選擇替換的次數
res = strvar.replace("不愛我","愛我",1)
print(res)
# *strip  默認去掉首尾兩邊的空白符  ***
"""空白符 空格 \n \t \r ... """
strvar = "     周潤發  "
res = strvar.strip()
print(strvar)
print(res)
# *center 填充字符串,原字符居中 (默認填充空格)
"""center(字符長度,填充符號)"""
strvar = "趙世超"
res = strvar.center(10)
# res = strvar.center(10,"*")
print(res)

3. 列表的相關操作

列表的相關操作

# ### 列表的相關操作
lst1 = ["孟凡偉","康與眾"]
lst2 = ["康與眾","張宇"]
# (1)列表的拼接   (同元組)
res = lst1 + lst2
print(res)
# (2)列表的重復   (同元組)
res = lst1 * 3
print(res)
# (3)列表的切片   (同元組)
"""
語法 => 列表[::]  完整格式:[開始索引:結束索引:間隔值]
	(1)[開始索引:]  從開始索引截取到列表的最後
	(2)[:結束索引]  從開頭截取到結束索引之前(結束索引-1)
	(3)[開始索引:結束索引]  從開始索引截取到結束索引之前(結束索引-1)
	(4)[開始索引:結束索引:間隔值]  從開始索引截取到結束索引之前按照指定的間隔截取列表元素值
	(5)[:]或[::]  截取所有列表
"""
lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"]
# (1)[開始索引:]  從開始索引截取到列表的最後
res =lst[2:]
print(res)
# (2)[:結束索引]  從開頭截取到結束索引之前(結束索引-1)
res =lst[:3]
print(res)
# (3)[開始索引:結束索引]  從開始索引截取到結束索引之前(結束索引-1)
res = lst[3:5]
print(res)
# (4)[開始索引:結束索引:間隔值]  從開始索引截取到結束索引之前按照指定的間隔截取列表元素值
# 正向截取
res = lst[::5]
print(res) # 0 5 10
# 逆向截取
res = lst[::-3] # -1 -4 -7
print(res)
# (5)[:]或[::]  截取所有列表
res = lst[:]
res = lst[::]
print(res)
# (4)列表的獲取   (同元組)
#       0  1  2
lst = [10,20,30]
#     -3  -2 -1
print(lst[-1])
# (5)列表的修改   ( 可切片 )
lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"]
# 改單個值
lst[1] = "陳璐"
print(lst)
# 1.改多個值 (如果使用切片進行修改,要求數據必須是Iterable可迭代性數據)
# lst[1:4] = ["孫悟空","豬八戒","白骨精"]
lst[1:4] = "你好"
print(lst)
# 2.改多個值(帶有步長)
"""帶有步長的切片修改,切出幾個元素就修改幾個元素,數量要一致."""
lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"]
"""0 3 6 """
lst[::3] = "abc"
# lst[::3] = "ab" error
print(lst)
# (6)列表的刪除   ( 可切片 )
lst = ["孟凡偉","康與眾","張宇","趙沈陽","需保障","梁新宇","沈思雨"]
# 1.一次刪一個
# del lst[2]
# print(lst)
# 2.一次刪一堆
# del lst[1:-1]
# print(lst)
# 3.註意點
res = lst[1:-1]
del res # 刪除的是res這個變量 和 列表無關
print(lst)

# 額外的註意點
tup = (1,2,3,4,[10,11,12])
print(tup[-1])
tup[-1][-1] = 13
print(tup)

4. 列表的相關函數

列表相關的函數

# ### 列表相關的函數
# 增
# append 向列表的末尾添加新的元素
lst = ["趙沈陽"]
lst.append("沈思雨")
print(lst)
# insert 在指定索引之前插入元素
lst = ['趙沈陽', '沈思雨']
lst.insert(1,"王偉")
print(lst)
# extend 迭代追加所有元素
"""迭代追加的數據是可迭代性數據(容器類型數據,range對象,迭代器)"""
lst = ['趙沈陽', '沈思雨']
# tup = (1,2,3)
# lst.extend(tup)
# strvar = "abc"
# lst.extend(strvar)
lst.extend(range(3))
print(lst)
# 刪
# 1.pop 通過指定索引刪除元素,若沒有索引移除最後那個 (推薦)
lst = ["曹靜怡","王志國","鄧鵬","合理"]
# 不指定下標,默認刪除最後一個
res = lst.pop()
print(res)
print(lst)
# 指定下標,刪除具體某個元素
res = lst.pop(1)
print(res)
print(lst)
# 2.remove 通過給予的值來刪除,如果多個相同元素,默認刪除第一個
lst = ["曹靜怡","王志國","合理","鄧鵬","合理"]
res = lst.remove("合理")
print(res)
print(lst)
# 3.clear 清空列表
lst = ["曹靜怡","王志國","合理","鄧鵬","合理"]
lst.clear()
print(lst)
# 改查 參考4.py
# 列表的其他相關函數
# index 獲取某個值在列表中的索引
lst = ["曹靜怡","王志國","合理","鄧鵬","合理","鄧鵬輝","鄧鵬藍","合理","鄧鵬綠"]
res = lst.index("合理")
res = lst.index("合理",3)
res = lst.index("合理",3,6) # 3 4 5
# res = lst.index("合理大") error
print(res)
# count 計算某個元素出現的次數
res = lst.count("合理") # 沒有范圍的概念
print(res)
# sort 對列表排序
lst = [-90,-100,-1,90,78]
# 從小到大進行排序
lst.sort()
# 從大到小進行排序
lst.sort(reverse=True)
print(lst)
# 對字符串進行排序(按照ascii編碼)
lst = ["kobi","james","jordon","yaoming","yi"]
lst.sort()
print(lst)
# 是否可以對中文排序(瞭解 無規律可循)
lst = ["王文","蔡徐坤"]
lst.sort()
print(lst)
# reverse 列表反轉操作
lst = [1,2,"a","蔡徐坤","易烊千璽"]
lst.reverse()
print(lst)

5. 深淺拷貝

列表的深淺拷貝

# ### 列表的深淺拷貝
"""
a = 100
b = a
a = 200
print(b)
lst1 = [1,2,3]
lst2 = lst1
lst1.append(4)
print(lst2)
"""
# 1.淺拷貝
import copy
"""模塊.方法() 同名模塊下的同名方法"""
# 方法一 (推薦)
"""
lst1 = [1,2,3]
lst2 = copy.copy(lst1)
lst1.append(10)
print(lst2)
print(lst1)
"""
# 方法二
"""
lst1 = [1,2,3]
lst2 = lst1.copy()
lst1.append(11)
print(lst1)
print(lst2)
"""
# 2.深拷貝
"""把所有層級的容器元素都單獨拷貝一份,放到獨立的空間中"""
"""
# 現象
lst1 = [1,2,3,[4,5,6]]
lst2 = copy.copy(lst1)
lst1[-1].append(77)
lst1.append(8888)
print(lst2)
print(lst1)
"""
import copy
lst1 = [1,2,3,[4,5,6]]
lst2 = copy.deepcopy(lst1)
lst1[-1].append(999)
print(lst2)
print(lst1)

# 其他容器的深拷貝
lst1 = (1,2,3,{"a":1,"b":[10,20]})
lst2 = copy.deepcopy(lst1)
lst1[-1]["b"].append(30)
print(lst1)
print(lst2)
"""
總結:
淺拷貝:
	隻拷貝一級容器中的所有元素獨立出一個單獨的空間.
深拷貝:
	把所有層級的容器中所有元素都單獨拷貝一份,形成獨立的空間
"""
"""
tuple 隻有count  index 兩個方法 使用同列表
"""

請添加圖片描述

請添加圖片描述

小提示:

:d 強制接收的數據為整型,如果不是整型則報錯
# 會報錯,因為9.5是小數
strvar = "劉一峰昨天晚上買瞭%d個花露水泡腳".formar(9.5)
print(strvar)
# 不報錯,3.88會強轉成int類型為3
strvar = "劉一峰昨天晚上買瞭%d個花露水泡腳" % (3.88)
print(strvar)
isdecimal 
strvar = "123.34"
res = strvar.isdecimal()
print(res) 這個值是False,因為.會認為不是一個數字
"123" 這個才會認為是純數字

6. 小練習

(1)字符串相關練習問題:

# ### 字符串相關練習
1.有變量name = "aleX leNb" 完成如下操作:
移除 name 變量對應的值兩邊的空格,並輸出處理結果
1)移除name變量左邊的"al"並輸出處理結果
2)移除name變量右面的"Nb",並輸出處理結果
3)移除name變量開頭的a與最後的"b",並輸出處理結果
4)判斷 name 變量是否以 "al" 開頭,並輸出結果
5)判斷name變量是否以"Nb"結尾,並輸出結果
6)將 name 變量對應的值中的 所有的"l" 替換為 "p",並輸出結果 
7)將name變量對應的值中的第一個"l"替換成"p",並輸出結果
8)將 name 變量對應的值根據 所有的"l" 分割,並輸出結果。
name = "aleX leNb"
res = name.split('l')
print(res)
9)將name變量對應的值根據第一個"l"分割,並輸出結果。 
10)將 name 變量對應的值變大寫,並輸出結果
11)將 name 變量對應的值變小寫,並輸出結果
12)將name變量對應的值首字母"a"大寫,並輸出結果
13)判斷name變量對應的值字母"l"出現幾次,並輸出結果
14)如果判斷name變量對應的值前四位"l"出現幾次,並輸出結果
15)從name變量對應的值中找到"N"對應的索引(如果找不到則報錯),並輸出結果
16)從name變量對應的值中找到"N"對應的索引(如果找不到則返回-1)輸出結果
17)從name變量對應的值中找到"X le"對應的索引,並輸出結果
18)請輸出 name 變量對應的值的第 2 個字符? 
19)請輸出 name 變量對應的值的前 3 個字符? 
20)請輸出 name 變量對應的值的後 2 個字符?
21)請輸出 name 變量對應的值中 "e" 所在索引位置?
2.實現一個整數加法計算器(兩個數相加):
如:content = input("請輸入內容:") 用戶輸入:5+9或3+ 9或5 + 6,然後進行分割再進行計算
3.升級題:實現一個整數加法計算器(多個數相加):
如:content = input("請輸入內容:") 用戶輸入:5+9+6 +12+  13,然後進行分割再進行計算。
4.計算用戶輸入的內容中有幾個整數(以個位數為單位)。
如:content = input("請輸入內容:")   # 如fhdal234slfh98769fjdla
5.等待用戶輸入內容,是否包含敏感字符?
如果存在敏感字符提示“存在敏感字符請重新輸入”,敏感字符:“粉嫩”、“鐵錘”

6.制作趣味模板程序需求:等待用戶輸入名字、地點、愛好
拼裝數據打印出:敬愛可親的xxx,最喜歡在xxx地方xxx

字符串相關練習答案:

# ### 字符串相關練習
# 1.有變量name = "aleX leNb" 完成如下操作:
name = "aleX leNb"
# 移除 name 變量對應的值兩邊的空格,並輸出處理結果
name.strip()
# 1)移除name變量左邊的"al"並輸出處理結果
name.lstrip("al")
# 2)移除name變量右面的"Nb",並輸出處理結果
name.rstrip("Nb")
# 3)移除name變量開頭的a與最後的"b",並輸出處理結果
print(name[1:-1])
# 4)判斷 name 變量是否以 "al" 開頭,並輸出結果
res = name.startswith("al")
print(res)
# 5)判斷name變量是否以"Nb"結尾,並輸出結果
res = name.endswith("Nb")
print(res)
# 6)將 name 變量對應的值中的 所有的"l" 替換為 "p",並輸出結果 
res = name.replace("l","p")
print(res)
# 7)將name變量對應的值中的第一個"l"替換成"p",並輸出結果
res = name.replace("l","p",1)
print(res)
# 8)將 name 變量對應的值根據 所有的"l" 分割,並輸出結果。
res = name.split("l")
print(res) 
# 9)將name變量對應的值根據第一個"l"分割,並輸出結果。 
# 字符串.split("分割的字符",分割的次數)
# 從左向右
print(name.split("l",1))
strvar = "you-can-you-up"
# 從右向左
print(strvar.rsplit("-",2))
# 10)將 name 變量對應的值變大寫,並輸出結果
name.upper()
# 11)將 name 變量對應的值變小寫,並輸出結果
name.lower()
# 12)將name變量對應的值首字母"a"大寫,並輸出結果
print(name.capitalize())
# 13)判斷name變量對應的值字母"l"出現幾次,並輸出結果
print(name.count("l"))
# 14)如果判斷name變量對應的值前四位"l"出現幾次,並輸出結果
print(name.count("l",0,4))
# 15)從name變量對應的值中找到"N"對應的索引(如果找不到則報錯),並輸出結果
print(name.index("N"))
# 16)從name變量對應的值中找到"N"對應的索引(如果找不到則返回-1)輸出結果
print(name.find("N"))
# 17)從name變量對應的值中找到"X le"對應的索引,並輸出結果
print(name.find("X le"))
# 18)請輸出 name 變量對應的值的第 2 個字符?
print(name[1] )
# 19)請輸出 name 變量對應的值的前 3 個字符? 
print(name[:3])
# 20)請輸出 name 變量對應的值的後 2 個字符?
print(name[-2:])
# 21)請輸出 name 變量對應的值中 "e" 所在索引位置?
name = "aleX leNb"
print(name.find("e"))
print("<=====>")
for i in range(len(name)):
	if name[i] == "e":print(i)

# 2.實現一個整數加法計算器(兩個數相加):
# 如:content = input("請輸入內容:") 用戶輸入:5+9或3+ 9或5 + 6,然後進行分割再進行計算
"""
content = input("請輸入內容:") 
print(content)
a,b = content.split("+")
print( a,b )
print(float(a.strip()) + float(b.strip()))
"""
# 3.升級題:實現一個整數加法計算器(多個數相加):
# 如:content = input("請輸入內容:") 用戶輸入:5+9+6 +12+  13,然後進行分割再進行計算。
"""
content = input("請輸入內容:") 
print(content)
lst = content.split("+")
print(lst)
total = 0
for i in lst:
	total += float(i.strip())
print(total)
"""
# 4.計算用戶輸入的內容中有幾個整數.
# 如:content = input("請輸入內容:")   # 如fhdal234slfh98769fjdla
"""
content = input("請輸入內容:")
total = 0
for i in content:
	if i.isdecimal():
		total += 1
print(total)
"""
# 5.等待用戶輸入內容,是否包含敏感字符?
# 如果存在敏感字符提示“存在敏感字符請重新輸入”,敏感字符:“粉嫩”、“鐵錘”
# 方法一
'''
lst = ["粉嫩","鐵錘"]
while True:
	# 重置sign標記
	sign = False
	content = input("請輸入內容:")
	# print(content)
	"""
	if content.find("粉嫩") == -1 and content.find("鐵錘") == -1:
		print("ok")
	else:
		print("not ok")
	"""
	# 小分鐵嫩錘
	for i in lst:
		if i in content:	
			# 把sign標記設置成True
			sign = True
			break
	# 如果sign 這個標記是True,敏感,否則不敏感;
	if sign == True:
		print("存在敏感字符請重新輸入")
	else:
		print("不存在敏感字符")
		break
'''
print("<====>")
# 方法二 (python特有) 額外的
"""如果在循環時,遇到break臨時終止瞭循環,else這個分支不執行的
隻有在正常全部循環執行瞭一遍之後,才會執行else分支
"""
"""
for i in range(3):
	if i == 2:
		break
else:
	print("ok")
"""

"""
lst = ["粉嫩","鐵錘"]
# 觸發break,不執行else , 不觸發break , 執行else
while True:
	content = input("請輸入內容:")
	for i in lst:
		# 但凡發現瞭敏感詞匯,直接break,就不會走else分支瞭
		if i in content:
			print("是敏感詞匯,請重新輸入")
			# 終止內層的for循環
			break
	else:
		print("不是敏感詞匯")
		# 終止外層while循環
		break
"""


# 6.制作趣味模板程序需求:等待用戶輸入名字、地點、愛好
# 拼裝數據打印出:敬愛可親的xxx,最喜歡在xxx地方xxx
while True:	
	name = input("請輸入姓名:  按q可以退出~")
	if name.upper() == "Q":
		print("歡迎老鐵下次來玩~")
		break
	place = input("請輸入地點:")
	hobby = input("請輸入愛好:")
	print("敬愛可親的{},最喜歡在{}地方{}".format(name,place,hobby))

(2)列表相關練習問題:

# ### 列表相關練習
1.li = ["alex", "WuSir", "xboy", "oldboy"]
1)列表中追加元素"seven",並輸出添加後的列表
2)請在列表的第1個位置插入元素"Tony",並輸出添加後的列表
3)請修改列表第2個位置的元素為"Kelly",並輸出修改後的列表
4)請將列表l2=[1,"a",3,4,"heart"]的每一個元素添加到列表li中,一行
代碼實現,不允許循環添加。
5)請將字符串s = "qwert"的每一個元素添加到列表li中,一行代碼實現,不允許循環添加。
6)請刪除列表中的元素"alex",並輸出添加後的列表
7)請刪除列表請刪除列表中的第2至4個元素,並輸出刪除元素後的列表
8)刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表
9)請將列表所有得元素反轉,並輸出反轉後的列表
10)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。
2,寫代碼,有如下列表,利用切片實現每一個功能
li = [1, 3, 2, "a", 4, "b", 5,"c"]
1)通過對li列表的切片形成新的列表l1,l1 = [1,3,2]
2)通過對li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
3)通過對li列表的切片形成新的列表l3,l3 = ["1,2,4,5]
4)通過對li列表的切片形成新的列表l4,l4 = [3,"a","b"]
5)通過對li列表的切片形成新的列表l5,l5 = ["c"]
6)通過對li列表的切片形成新的列表l6,l6 = ["b","a",3]
3,寫代碼,有如下列表,按照要求實現每一個功能。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
1)將列表lis中的"tt"變成大寫。
2)將列表中的數字3變成字符串"100"。
3)將列表中的字符串"1"變成數字101
4,li = ["alex", "eric", "rain"]   
利用下劃線將列表的每一個元素拼接成字符串"alex_eric_rain"
5.利用for循環打印出下面列表的索引。
li = ["alex", "WuSir", "xboy", "oldboy"]
6.利用for循環和range 找出50以內能被3整除的數,並將這些數插入到一個新列表中。
7.利用for循環和range從100~10,倒序將所有的偶數添加到一個新列表中,然後對列表的元素進行篩選,將能被4整除的數留下來
8.查找列表li中的元素,移除每個元素的空格,並找出以"A"或者"a"開頭,並以"c"結尾的所有元素,並添加到一個新列表中,最後循環打印這個新列表。
li = ["xboy ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", "  aqc"]
9.敏感詞列表 li = ["張三", "李四", "王二", "麻子"]
將用戶輸入的內容中的敏感詞匯替換成等長度的*(張三就替換***),並添加到一個列表中;如果用戶輸入的內容沒有敏感詞匯,則直接添加到新列表中。
10.li = [1, 3, 4, "alex", [3, 7, “23aa”,8, "xboy"], 5,(‘a','b')]
循環打印列表中的每個元素,並轉化為小寫,遇到列表則再循環打印出它裡面的元素。

11.tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
a.講述元組的特性
b.請問tu變量中的第一個元素 "alex" 是否可被修改?
c.請問tu變量中的"k2"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven"
d.請問tu變量中的"k3"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven"

列表相關練習答案:

# ### 列表相關練習
# 1.li = ["alex", "WuSir", "xboy", "oldboy"]
li = ["alex", "WuSir", "xboy", "oldboy"]
# 1)列表中追加元素"seven",並輸出添加後的列表
li.append("seven")
# 2)請在列表的第1個位置插入元素"Tony",並輸出添加後的列表
li.insert(0,"Tony")
# 3)請修改列表第2個位置的元素為"Kelly",並輸出修改後的列表
li[1] = "Kelly"
# 4)請將列表l2=[1,"a",3,4,"heart"]的每一個元素添加到列表li中,一行
# 代碼實現,不允許循環添加。
l2=[1,"a",3,4,"heart"]
li.extend(l2)
print(li)
# 5)請將字符串s = "qwert"的每一個元素添加到列表li中,一行代碼實現,不允許循環添加。
s = "qwert"
li.extend(s)
print(li)
# 6)請刪除列表中的元素"Tony",並輸出添加後的列表
li.remove("Tony")
print(li)
# 7)請刪除列表中的第2至4個元素,並輸出刪除元素後的列表
# del li[1:4]
# print(li)
# 8)刪除列表中的第2個元素,並輸出刪除的元素和刪除元素後的列表
res = li.pop(1)
print(res)
print(li)
# 9)請將列表所有得元素反轉,並輸出反轉後的列表
li.reverse()
print(li)
# 10)請計算出"alex"元素在列表li中出現的次數,並輸出該次數。
print(li.count("xboy"))

# 2,寫代碼,有如下列表,利用切片實現每一個功能
li = [1, 3, 2, "a", 4, "b", 5,"c"]
# 1)通過對li列表的切片形成新的列表l1,l1 = [1,3,2]
print(li[:3])
# 2)通過對li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
print(li[3:6])
# 3)通過對li列表的切片形成新的列表l3,l3 = ["1,2,4,5]
print(li[::2])
# 4)通過對li列表的切片形成新的列表l4,l4 = [3,"a","b"]
print(li[1:-1:2])
# 5)通過對li列表的切片形成新的列表l5,l5 = ["c"]
print(li[-1:])
# 6)通過對li列表的切片形成新的列表l6,l6 = ["b","a",3]
print(li[-3::-2])

# 3,寫代碼,有如下列表,按照要求實現每一個功能。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
# 1)將列表lis中的"tt"變成大寫。
print(lis[3][2][1][0].upper())
# 2)將列表中的數字3變成字符串"100"。
lis[3][2][1][1] = "100"
# 3)將列表中的字符串"1"變成數字101
# lis[3][2][1][-1] = 101
# print(lis)
lis[3][2][1].remove("1") # 先刪
lis[3][2][1].append(101) # 在增
print(lis)

# 4,
li = ["alex", "eric", "rain"]   
# 利用下劃線將列表的每一個元素拼接成字符串"alex_eric_rain"
# 一
print("_".join(li))
# 二
strvar = ""
for i in li:
	strvar += i + "_"
print(strvar.rstrip("_"))

# 5.利用for循環打印出下面列表的索引。
li = ["alex", "WuSir", "xboy", "oldboy"]
# 一
for i in range(len(li)):
	print(i)
# 二
for i in li:
	print(li.index(i))

# 6.利用for循環和range 找出50以內能被3整除的數,並將這些數插入到一個新列表中。
a = []
for i in range(50):
	if i % 3 == 0 :
		a.append(i)
print(a)
# 7.利用for循環和range從100~10,倒序將所有的偶數添加到一個新列表中,然後對列表的元素進行篩選,將能被4整除的數留下來
a = []
for i in range(100,9,-2):
	if i % 4 == 0:
		a.append(i)	
print(a)

# 8.查找列表li中的元素,移除每個元素的空格,並找出以"A"或者"a"開頭,並以"c"結尾的所有元素,並添加到一個新列表中,最後循環打印這個新列表。
li = ["xboy ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", "  aqc"]
lst2 = []
for j in li:
	if (j.strip().startswith("A") or j.strip().startswith("a")) and j.strip().endswith("c"):
		lst2.append(j.strip())
print(lst2)

# 9.敏感詞列表 li = ["張三", "李四", "王二", "麻子"]
# 將用戶輸入的內容中的敏感詞匯替換成等長度的*(張三就替換***),並添加到一個列表中;如果用戶輸入的內容沒有敏感詞匯,則直接添加到新列表中。
li = ["張三", "李四", "王二", "麻子"]
lst = []
"""
while True:
	strvar = input("請輸入詞匯:")
	lst.append(strvar.replace("張三","***").replace("李四","***").replace("王二","***").replace("麻子","*****"))
	print(lst)
"""
"""
while True:
	strvar = input("請輸入詞匯:")
	# 按q退出
	if strvar.upper() == "Q":
		break
	# 過濾敏感詞匯
	for i in li:
		if i in strvar:
			strvar = strvar.replace(i,len(i) * "*")
	# 把處理數據放到列表中
	lst.append(strvar)
print(lst)
"""

# 10.
print("<====>")
li = [1, 3, 4, "ALEx", [3, 7, "23AA",8, "XBoy"], 5,("A","b")]
# 循環打印列表中的每個元素,並轉化為小寫,遇到列表則再循環打印出它裡面的元素。
for i in li:
	# 判斷是否是字符串
	if isinstance(i,str):
		print(i.lower())
	# 判斷是否是Number
	elif isinstance(i,(int,bool,complex,float)):
		print(i)
	# 判斷是否是容器
	elif isinstance(i,(list,tuple,set,dict)):
		for j in i:
			# 判斷容器中的元素是不是字符串
			if isinstance(j,str):
				print(j.lower())
			# 不是的話直接輸出即可
			else:
				print(j)

11.tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
# a.講述元組的特性
可獲取 , 不可修改 , 有序
# b.請問tu變量中的第一個元素 "alex" 是否可被修改? 不可以
# c.請問tu變量中的"k2"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven"
列表 能改 tu[1][2]["k2"].append("Seven")
# d.請問tu變量中的"k3"對應的值是什麼類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven"
元組,不行,

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: