3 列表迴圈 字典迴圈 刪除 檔案操作

2021-10-01 19:23:38 字數 4909 閱讀 3947

for item in lst:  如果你只需要拿到元素

for i in range(len(lst)): 不光需要拿到元素, 還需要拿到索引

in lst

lst = ["小姨多鶴_sb", "linux核心程式設計_sb", "shell指令碼大全_sb", "linux私房菜_sb"]

for item in lst:

item = item.replace("_sb", "")

print(item)

結果小姨多鶴

linux核心程式設計

shell指令碼大全

linux私房菜

in range

lst = ["小姨多鶴_sb", "linux核心程式設計_sb", "shell指令碼大全_sb", "linux私房菜_sb"]

for item in lst:

print(item)

for i in range(len(lst)):

item = lst[i]

item = item.replace("_sb", "")

lst[i] = item

print(lst)

結果小姨多鶴_sb

linux核心程式設計_sb

shell指令碼大全_sb

linux私房菜_sb

['小姨多鶴', 'linux核心程式設計', 'shell指令碼大全', 'linux私房菜']

for k in dic: 迴圈直接拿到每乙個key

for k, v in dic.items(): 迴圈字典直接拿到key和value

第一種 in dic
dic = 

for item in dic:

print(item, dic[item])

結果趙本山 勸說小丑

范偉 道士下山

郭德綱 祖宗十九代

第二種,in dic.items() 可以直接拿到k, v
dic = 

for k, v in dic.items(): # (key, value)

print(k, v)

結果趙本山 勸說小丑

范偉 道士下山

郭德綱 祖宗十九代

自動解包

a, b = (1, 2)  # 元祖自動解包, 解構

print(a)

print(b)結果1

2

3 列表和字典的刪除-有大坑

列表的刪除,把需要刪除的元素找到,然後存到新列表,迴圈新列表,從老列表中刪除。

原因:刪除索引0後,1(張無忌)會移動到0位置,後面依次類推,張大郎移到1,第二次迴圈時會刪除張大朗,而張無忌沒有刪除。

lst = ["張本山", "張無忌", "張大郎", "張alex", "小妞"]

new_lst =

for item in lst:

if item.startswith("張"):

# lst.remove(item) # 刪除,刪除索引0後,1(張無忌)會移動到0位置,後面依次類推,張大郎

for item in new_lst: # 迴圈新列表, 刪除老列表

lst.remove(item)

print(lst)

結果['小妞']

字典的刪除

dic = 

lst =

for k in dic:

print("取出key", k)

print("存到新列表",lst)

print("分割線")

for item in lst:

print("刪除key",item)

dic.pop(item)

print(dic)

結果取出key 趙本山

取出key 范偉

取出key 郭德綱

存到新列表 ['趙本山', '范偉', '郭德綱']

分割線刪除key 趙本山

刪除key 范偉

刪除key 郭德綱

{}

案列統計車牌數量

思路

# 1. 拿到每乙個車牌子

# 2. 拿到車牌的簡稱

# 3. 通過簡稱去拿省份名稱

# 4. 統計車牌的數量????

cars = ['魯a32444', '魯b12333', '京b8989m', '黑c49678', '黑c46555', '滬b25041', '黑c34567']

locations =

result = {}

for car in cars: # 魯a32444

loc = car[0] # 魯

prov = locations[loc] # 山東

# 分成兩種情況

# 如果字典中有這個省份. 只需要value+1即可

if result.get(prov): # 去字典中查詢這個省份資訊. 如果找到了. 返回的是數字, 如果找不到返回的是none

result[prov] += 1

else: # 如果字典中沒有這個省份. 需要新增乙個省份:1

result[prov] = 1

print(result)

結果

4  編碼

ascii : 英文大小寫字母, 數字, 標點符號(英文), 計算機操作符

乙個ascii由8bit01 組成. 256個文字 只用到了前7位. 位元組. 1個byte表示8個01

gbk : 國標碼(guo biao kuo) 16個01組成 2byte, 最多能表示65536個文字.

中文, 日文, 韓文, 蒙古文, 藏文. 正體中文. 相容ascii

unicode: 萬國碼, 由32個bit組成, 4byte

不能進行儲存和傳輸

ucs-2 拿出uncode的乙個面進行使用(python預設用的是它)

ucs-4 由32個bit組成

utf-8 : unicode的實現, 可變長度的unicode

英文: 8bit 1byte

歐洲: 16bit 2byte

其他: 24bit 3byte

utf-8和gbk不能直接轉換

編碼: encode()

解碼: decode()

5 檔案操作

open(檔案路徑, mode="模式", encoding="編碼規則")

for line in f:

讀取檔案中的每一行資料

f.read()

f.write()

模式: r 唯讀

w 只寫

a 只能追加寫

+ 擴充套件

r+ 讀寫操作

w+ 寫讀操作

a+ 追加寫讀操作

b bytes 讀取和寫入非文字檔案

.exe .zip .rar .jpg

r讀檔案

f = open("e:/資料/test.txt", mode="r", encoding="utf-8")

print(f.read()) # 檔案的內容全部讀取出來,如果檔案大容易導致記憶體溢位問題

# print(f.read(3)) # 讀3行

# 推薦

for line in f: # 把檔案中的每一行讀取出來

print(line.strip())

f.close()

把print輸出換行的\n替換為空

print("娃哈哈", end="")

print("礦泉水", end="")

結果娃哈哈礦泉水

w寫檔案,每次執行open時,會清空原檔案

# 寫: 能建立檔案, w模式會自動的清空原始檔

f = open("呵呵呵.txt", mode="w", encoding="utf-8")

f.write("你好\n")

f.write("我也好")

f.close()

a寫檔案,追加
f = open("哈哈哈.txt", mode="a", encoding="utf-8")

f.write("你好111")

f.close()

r+讀寫模式
f = open("哈哈哈.txt", mode="r+", encoding="utf-8")

print(f.read())

f.write("我很好")

f.close()

檔案複製:不要有編碼,邊複製邊寫

f = open()  

f.close()

等同於with open() as f

with open("c:/崔萬志-不抱怨-靠自己.flv", mode="rb") as f1, open("d:/崔萬志-不抱怨-靠自己.flv", mode="wb") as f2:

for part in f1:

f2.write(part)

檔案剪下

import os # 匯入os模組

with open("c:/崔萬志-不抱怨-靠自己.flv", mode="rb") as f1, open("d:/崔萬志-不抱怨-靠自己.flv", mode="wb") as f2:

for part in f1:

f2.write(part)

os.remove("d:/崔萬志-不抱怨-靠自己.flv")

2 19 列表 迴圈 控制語句 字典

classmates zhangsan list wangwu money 3000,4000,5000 tuple的意義 tuple不能改變,更安全。如果可能,能有tuple代表list就盡量用tuple。print true 只要x是非零數值,非空字串,非空list等,就判斷為true,再判斷為...

2 30 列表 迴圈,程式控制語句 字典

1.list列表 一種資料型別,有序集合,可以任意新增刪除元素。2.python迴圈 python迴圈分為兩種,一種是for in迴圈,依次把 list 或 tuple 中的每個元素迭代出來。for迴圈語法 for迭代變數in物件 序列 迴圈體 如果list裡面有100這樣的元素怎麼辦?list 0...

python迴圈刪除列表和字典

1 迴圈刪除列表中的元素lis 11 22,33 44,55 for i in range len lis del lis i 刪除報錯,因為刪除過程中,列表的下標會自動補齊到0 2 將偶數從列表中刪掉lis 11 22,33 44,55 for i in range len lis iflen i...