python入门


数据类型

字符串string

  1. 字符串拼接

    a = "天下"
    b = a + "会"    # 天下会
    c = a * 2       # 天下天下
    
  2. 长度

    a = "一二三四五六七八九十"
    b = len(a)      # 10
    
  3. 包含判断in:还有个not in

    a = "一二三四五六七八九十"
    b = "五" in a   # True
    
  4. 开头包含判断startswith:还有个endswith

    a = "一二三"
    b = a.startswith("一")     # True
    c = a.endswith("三")       # True
    
    #指定开始位置
    c = a.startswith("二",2)   # True
    
  5. 两端删除strip

    a = "一一二三一四五一一"
    b = a.strip("一")          # 二三一四五;不限数量
    
  6. 计数count:可指定范围,规则和切片一致

    a = "一二二三"
    b = a.count("二")          # 2
    c = a.count("二", 2, 3)    # 1
    
  7. 替换replace

    a = "一二三一四五"
    b = a.replace("一","1")    # 1二三1四五
    
  8. 根据索引查找find

    a = r"一二三四五"
    b = a.find("三")    # 2
    b = a.find("六")    # -1;没找到
    
  9. 根据索引查找index

    a = r"一二三四五"
    b = a.index("三")   # 2
    c = a.index("六")   # 报错;没找到
    
  10. 插入join

    a = "一二三"
    b = "|".join(a)     # 一|二|三
    
  11. 分割split

    a = "一、二、三"
    b = a.split("、")       # ['一', '二', '三']
    b = a.split("、", 1)    # ['一', '二、三'];分割一次
    
  12. 大小写转化lowerupper

    a = "abcDEF"
    b = a.lower()      # abcdef
    c = a.upper()      # ABCDEF
    

  1. 方法组合使用
    a = "一、二、三"
    b = a.replace("、", "|").join("12")  # 1一|二|三2
    

  1. 切片:永远从左边作为起点
    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]       # 十九八七六五四三二一
    

  1. 格式化字符串
    a = "8"
    b = "夏天"
    c = f"你好,{a}月的{b}"      # 你好,8月的夏天
    
  2. 转义
    # 换行符
    a = "一二三四五\n六七八九十"  # 两行显示
    
    # 去转义
    a = r"一二三四\n五六七八九十" # 转义符失效
    

列表list

  1. 长度len
    lst1 = ["一", "二", "三"]
    a = len(lst1)     # 3
    
  2. 最大最小值maxmin:一般只能比较数值列表
    lst1 = [1, 2, 3, 4, 5]
    a = max(lst1)     # 5
    a = min(lst1)     # 1
    
  3. 逆列表reverse
    lst1 = ["一", "二", "三"]
    lst1.reverse()
    lst1              # ['三', '二', '一']
    
  4. 排序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)]
    
  5. 合并:等同extend,但extend合并字符串会变成单字符
    lst1 = ["一", "二", "三"]
    a = lst1 + ["四", "五"]   # ['一', '二', '三', '四', '五']
    
  6. 添加元素append
    lst1 = ["一", "二", "三"]
    lst1.append("四")
    lst1              # ['一', '二', '三', '四']
    
  7. 替换
    lst1 = ["一", "二", "三"]
    lst1[2] = "四"
    lst1              # ['一', '二', '四']
    
  8. 元素插入insert
    lst1 = ["一", "二", "三"]
    lst1.insert(2, "四")
    lst1              # ['一', '二', '四', '三']
    
  9. 插入join:和字符串的一样,这里只是把列表当作字符串
    lst1 = ["一", "二", "三"]
    a = "|".join(lst1)        # 一|二|三
    
  10. 判断包含in:还有not in
    lst1 = ["一", "二", "三"]
    a = "二" in lst1  # True
    
  11. 通过索引查元素
    lst1 = ["一", "二", "三", "四", "五", [1, 2, 3]]
    a = lst1[1]      # 二
    
    #倒查
    b = lst1[-2]     # 五
    
    #多层查
    c = lst1[5][1]   # 2
    
  12. 通过元素查索引index:没找到报错
    lst1 = ["一", "二", "三"]
    a = lst1.index("二")      # 1
    
  13. 通过索引删除:不给索引删除末尾
    lst1 = ["一", "二", "三"]
    a = lst1.pop(1)  # 二;返回删除的元素
    lst1             # ['一', '三']
    
  14. 通过元素删除:有重复的就删除第一个
    lst1 = ["一", "二", "三"]
    lst1.remove("二")
    lst1             # ['一', '三']
    
  15. 切片:和字符串的一致,略讲
    lst1 = ["一", "二", "三", "四", "五"]
    a = lst1[2:4]    # ['三', '四']
    

元组tuple:不可修改,查询和列表一样

  1. 代码
    tup1 = (1,)      # 一个元素要加`,`
    

字典dict

  1. 根据key查询value:没查询到报错

    dic1 = {"No1":"1", "No2":"2", "No3":"3"}
    a = dic1["No1"]            # 1
    
  2. 根据key查询valueget:没查询到返回None

    dic1 = {"No1":"1", "No2":"2", "No3":"3"}
    a = dic1.get("No1")        # 1
    
  3. 根据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'}
    
  4. 更新update:重复的会替换

    dic1 = {"No1":"1", "No2":"2", "No3":"3"}
    dic1.update({"No3":"3.1", "No4":"3"})  # {'No1': '1', 'No2': '2', 'No3': '3.1', 'No4': '3'}
    
  5. 删除pop:没有对应的key会报错

    dic1 = {"No1":"1", "No2":"2", "No3":"3"}
    dic1.pop("No3")
    dic1             # {'No1': '1', 'No2': '2'}
    
  6. 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"}}}
    

数据类型转化

  1. 转整数
    # 字符串转整数
    a = "123"
    b = int(a)
    
    # 小数转整数
    a = 3.7
    b = int(a)  # 3
    
  2. 转字符串
    a = 123
    b = str(a)
    
  3. 列表元组互转
    a = ("一", "二", "三")
    b = list(a)
    c = tuple(b)
    
  4. 字典转列表
    # 转化成键值对表、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

  1. 代码:可以使用andor和多个逻辑符0
    if a == 2:
    	a = 0
    elif a == 3:
    	a = 1
    else:
    	a = "其他"
    

for

  1. 示例:in后面可以跟list、tuple和string
    for i in range(10):       # range函数和切片一样,分隔符是`,`
    	a = i + 1
    else:                    # else只有for循环“正常”结束才会执行,有break就不会执行。但如果只是接在for循环后面的普通语句,不管for循环是否正常结束都会执行。
    	print("循环正常结束")
    
  2. 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("完整的一次")
    
  3. 注意:循环的列表不能变动,不然后按照第一次的列表进行,容易发生out of index。

while

  1. 示例
    a = 1
    while a <= 10:
    	a = a + 1
    else:
    	a = 0
    

变量交换赋值:python内存结构和jsva差不多

  1. 示例:语法糖
    a = 1
    b = 2
    a, b = b, a   # a=2, b=1
    

输入input:字符串数据类型

  1. 示例
    a = input("请输入:")
    

打印print

  1. 打印结尾:任意字符串;默认是\n,即换行;\t表示不换行
    for i in range(10):
    	print(i, end="\t")
    
  2. 打印间隔:任意字符串
    print("你好","朋友们","拜拜",sep="|")  # 你好|朋友们|拜拜
    

方法

基础结构

  1. 示例
    def method1(a, b):
    	"""
    	:param a: 加数1
    	:param b: 加数2
    	:return: 和
    	"""
    	c = a + b
    	return c