列表循环"/>
3 列表循环
1 列表循环
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私房菜']
2 字典循环
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位置,后面依次类推,张大郎 new_lst.append(item) # 把要删除的内容记录在一个新列表中
for item in new_lst: # 循环新列表, 删除老列表lst.remove(item)
print(lst)结果
['小妞']
字典的删除
dic = {"赵本山": "劝说小丑", "范伟": "道士下山", "郭德纲": "祖宗十九代"}
lst = []
for k in dic:print("取出key", k)lst.append(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: # 鲁A32444loc = car[0] # 鲁prov = locations[loc] # 山东# 分成两种情况# 如果字典中有这个省份. 只需要value+1即可if result.get(prov): # 去字典中查找这个省份信息. 如果找到了. 返回的是数字, 如果找不到返回的是Noneresult[prov] += 1else: # 如果字典中没有这个省份. 需要新增一个省份:1result[prov] = 1print(result)结果
{'山东': 2, '北京': 1, '黑龙江': 3, '上海': 1}
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写文件,追加
# a: append追加. 在原来文件的基础上写入内容
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")
更多推荐
3 列表循环
发布评论