python入门
数据类型
字符串string
-
字符串拼接
a = "天下" b = a + "会" # 天下会 c = a * 2 # 天下天下 -
长度
a = "一二三四五六七八九十" b = len(a) # 10 -
包含判断in:还有个
not ina = "一二三四五六七八九十" b = "五" in a # True -
开头包含判断
startswith:还有个endswitha = "一二三" b = a.startswith("一") # True c = a.endswith("三") # True #指定开始位置 c = a.startswith("二",2) # True -
两端删除
stripa = "一一二三一四五一一" b = a.strip("一") # 二三一四五;不限数量 -
计数
count:可指定范围,规则和切片一致a = "一二二三" b = a.count("二") # 2 c = a.count("二", 2, 3) # 1 -
替换
replacea = "一二三一四五" b = a.replace("一","1") # 1二三1四五 -
根据索引查找
find:a = r"一二三四五" b = a.find("三") # 2 b = a.find("六") # -1;没找到 -
根据索引查找
index:a = r"一二三四五" b = a.index("三") # 2 c = a.index("六") # 报错;没找到 -
插入
joina = "一二三" b = "|".join(a) # 一|二|三 -
分割
splita = "一、二、三" b = a.split("、") # ['一', '二', '三'] b = a.split("、", 1) # ['一', '二、三'];分割一次 -
大小写转化
lower和uppera = "abcDEF" b = a.lower() # abcdef c = a.upper() # ABCDEF
- 方法组合使用
a = "一、二、三" b = a.replace("、", "|").join("12") # 1一|二|三2
- 切片:永远从左边作为起点
a = "一二三四五六七八九十" # 从0开始,右开区间 b = a[2] # 三 c = a[0:1] # 一 # 取到最左最右 d = a[0:] # 一二三四五六七八九十 f = a[:1] # 一 # 步长 e = a[0:5:2] # 一三五 g = a[5:0:-2] # 六四二 h = a[::-1] # 十九八七六五四三二一
- 格式化字符串
a = "8" b = "夏天" c = f"你好,{a}月的{b}" # 你好,8月的夏天 - 转义
# 换行符 a = "一二三四五\n六七八九十" # 两行显示 # 去转义 a = r"一二三四\n五六七八九十" # 转义符失效
列表list
- 长度
lenlst1 = ["一", "二", "三"] a = len(lst1) # 3 - 最大最小值
max和min:一般只能比较数值列表lst1 = [1, 2, 3, 4, 5] a = max(lst1) # 5 a = min(lst1) # 1 - 逆列表
reverselst1 = ["一", "二", "三"] lst1.reverse() lst1 # ['三', '二', '一'] - 排序
sort:这个可以设置复杂的规则lst1 = [(2, 2), (3, 4), (4, 1), (1, 3)] # 排序规则:单个元素处理 def takeSecond(elem): return elem[1] # key表示单个元素处理规则,reverse表示降序排 lst1.sort(key=takeSecond,reverse=True) lst1 # [(3, 4), (1, 3), (2, 2), (4, 1)] - 合并:等同
extend,但extend合并字符串会变成单字符lst1 = ["一", "二", "三"] a = lst1 + ["四", "五"] # ['一', '二', '三', '四', '五'] - 添加元素append
lst1 = ["一", "二", "三"] lst1.append("四") lst1 # ['一', '二', '三', '四'] - 替换
lst1 = ["一", "二", "三"] lst1[2] = "四" lst1 # ['一', '二', '四'] - 元素插入
insertlst1 = ["一", "二", "三"] lst1.insert(2, "四") lst1 # ['一', '二', '四', '三'] - 插入
join:和字符串的一样,这里只是把列表当作字符串lst1 = ["一", "二", "三"] a = "|".join(lst1) # 一|二|三 - 判断包含
in:还有not inlst1 = ["一", "二", "三"] a = "二" in lst1 # True - 通过索引查元素
lst1 = ["一", "二", "三", "四", "五", [1, 2, 3]] a = lst1[1] # 二 #倒查 b = lst1[-2] # 五 #多层查 c = lst1[5][1] # 2 - 通过元素查索引
index:没找到报错lst1 = ["一", "二", "三"] a = lst1.index("二") # 1 - 通过索引删除:不给索引删除末尾
lst1 = ["一", "二", "三"] a = lst1.pop(1) # 二;返回删除的元素 lst1 # ['一', '三'] - 通过元素删除:有重复的就删除第一个
lst1 = ["一", "二", "三"] lst1.remove("二") lst1 # ['一', '三'] - 切片:和字符串的一致,略讲
lst1 = ["一", "二", "三", "四", "五"] a = lst1[2:4] # ['三', '四']
元组tuple:不可修改,查询和列表一样
- 代码
tup1 = (1,) # 一个元素要加`,`
字典dict
-
根据key查询value:没查询到报错
dic1 = {"No1":"1", "No2":"2", "No3":"3"} a = dic1["No1"] # 1 -
根据key查询value
get:没查询到返回Nonedic1 = {"No1":"1", "No2":"2", "No3":"3"} a = dic1.get("No1") # 1 -
根据key查询插入
setdefault:查询到就返回value,没查到就插入None值键值对,也可设置Value插入dic1 = {"No1":"1", "No2":"2", "No3":"3"} a = dic1.setdefault("No3") # 3;查询到 b = dic1.setdefault("No4") # None;查询到没有,返回插入的'No4': None的value c = dic1.setdefault("No5", "5") # 5;查询到没有,返回插入的'No5': 5的value dic1 # {'No1': '1', 'No2': '2', 'No3': '3', 'No4': None, 'No5': '5'} -
更新
update:重复的会替换dic1 = {"No1":"1", "No2":"2", "No3":"3"} dic1.update({"No3":"3.1", "No4":"3"}) # {'No1': '1', 'No2': '2', 'No3': '3.1', 'No4': '3'} -
删除
pop:没有对应的key会报错dic1 = {"No1":"1", "No2":"2", "No3":"3"} dic1.pop("No3") dic1 # {'No1': '1', 'No2': '2'} -
json文件转化成字典:不管有多少层,都会转化成字典的键值对,有重复的key,会取后者
#下面这个是json1.json文件内容 """ { "user": { "No1": { "name": "zhangsan" }, "No2": { "name": "lisi" }, "No2": { "name": "lisi2" } } } """ import json with open("json1.json",mode="r+",encoding="utf-8") as f: rows = f.read() # 读取整个json文档 dct1 = json.loads(rows) # {'user': {'No1': {'name': 'zhangsan'}, 'No2': {'name': 'lisi2'}}} # 字典转化成json:虽然内容还是和刚才的字典一样,但是已经不能使用字典的方法了 json1 = json.dumps(dct1) # {"user": {"No1": {"name": "zhangsan"}, "No2": {"name": "lisi2"}}}
数据类型转化
- 转整数
# 字符串转整数 a = "123" b = int(a) # 小数转整数 a = 3.7 b = int(a) # 3 - 转字符串
a = 123 b = str(a) - 列表元组互转
a = ("一", "二", "三") b = list(a) c = tuple(b) - 字典转列表
# 转化成键值对表、key表、value表 dic1 = {"No1":"1", "No2":"2", "No3":"3"} a = list(dic1.items()) # [('No1', '1'), ('No2', '2'), ('No3', '3')] b = list(dic1.keys()) # ['No1', 'No2', 'No3'] c = list(dic1.values()) # ['1', '2', '3']
循环控制
if
- 代码:可以使用
and、or和多个逻辑符0if a == 2: a = 0 elif a == 3: a = 1 else: a = "其他"
for
- 示例:
in后面可以跟list、tuple和stringfor i in range(10): # range函数和切片一样,分隔符是`,` a = i + 1 else: # else只有for循环“正常”结束才会执行,有break就不会执行。但如果只是接在for循环后面的普通语句,不管for循环是否正常结束都会执行。 print("循环正常结束") - break和continue
for i in range(10): print(i) if i > 5: break # 跳出当前循环,执行循环下面的内容,不影响外层循环 for i in range(10): print(i) if i > 5: continue # 跳过continue下面循环的内容,进行下次循环 print("完整的一次") - 注意:循环的列表不能变动,不然后按照第一次的列表进行,容易发生out of index。
while
- 示例
a = 1 while a <= 10: a = a + 1 else: a = 0
变量交换赋值:python内存结构和jsva差不多
- 示例:语法糖
a = 1 b = 2 a, b = b, a # a=2, b=1
输入input:字符串数据类型
- 示例
a = input("请输入:")
打印print
- 打印结尾:任意字符串;默认是\n,即换行;\t表示不换行
for i in range(10): print(i, end="\t") - 打印间隔:任意字符串
print("你好","朋友们","拜拜",sep="|") # 你好|朋友们|拜拜
方法
基础结构
- 示例
def method1(a, b): """ :param a: 加数1 :param b: 加数2 :return: 和 """ c = a + b return c