zoukankan      html  css  js  c++  java
  • Python(1-8天总结)

    day1:
    变量:把程序运行过程中产生的中间值。暂时存储起来。方便后面的程序调用.
    变量命名规范:
    常量:所有字母大写
    注释:
    数据类型:
    1. int 整数
    2. str 字符串. 不会用字符串保存大量的数据 ,字符串由',"", ''', """组成
    3. bool 布尔值. True, False 所有的空都是False。 非空都是True
    4. list 列表(重点) 存放大量的数据
    5. dict 字典 key: value 查找会比较快
    6. set 集合 无序 不能重复
    7. bytes 一堆字节。 我们程序处理的最小单位
    8. tuple 元组 不可变的列表

    输入:input()
    循环:if elif else

    day2:
    循环:while break终止 continue停止当前本次循环。 继续执行下一次循环
    格式化输出:%s
    运算符:优先级: ()-> not -> and -> or
    1 and 2 取2
    1 or 2 取 1
    0 and 2
    0 and 1
    字符串编码
    1. ASCII 8bit 1byte
    2. GBK 16bit 2byte
    3. Unicode 32bit 4byte
    4. UTF-8 可变长度的unicode
    英文: 8bit 1byte
    欧洲文字; 16bit 2byte
    中文 :24bit 3byte
    判断:in / not in

    day3:
    1.索引
    字符串中每个字符的位置顺序
    索引从0开始. 程序员数数从0开始
    s[索引] 获取到字符串s中的索引位置的数据
    s[:] 从头到尾
    s[-1] 反向索引
    s[3:1:-1]) 从右往左切片
    s[start: end] 从start切到end。 但是不包含end. 顾头不顾尾
    s[start: end: step] step步长。 每隔xx个取1个。 默认是1 如果step是-1 从右往左取值

    2.切片
    s[start: end: step]
    从start开始到end结束。 但是取不到end. 每step个取一个

    3.字符串操作
    1.upper() 全部转化成大写字母
    2.strip() 去掉左右两段的空白(空格, , )
    3.replace(old, new) 字符串替换
    4.split() 切割. 得到的结果是一个列表.
    5.startswith() 判断是否以xxx开头
    6.find() 查找。如果找到了。 返回索引。如果找不到返回-1
    7.len() 内置函数,求字符串长度
    8.center()
    9.count()计数
    10.find()查找 没有返回-1
    11.index()索引 没有报错
    12.isalpha() 检测字符串是否只由字母组成
    13.isdigit() 是否只有阿拉伯数字
    14.isnumeric() 检测字符串是否只由数字组成。这种方法是只针对unicode对象
    15.isalnum() 检测字符串是否由字母和数字组成。

    4. 迭代
    for 变量 in 可迭代对象:
    循环体(break,continue)
    要求掌握
    # 把任意字符串中的每一个字符打印出来
    # s = "胡辣汤好喝,疙瘩汤也好喝,所以再来一碗"
    # index = 0
    # while index < len(s): # 0 1 2...19
    # print(s[index])
    # index += 1

    day4:
    1、List:增删改查
    1. 新增:
    append(元素) 添加到末尾
    insert(index, 元素) 把元素插入到对应索引的位置
    extend(可迭代对象) 迭代添加
    2.删除:
    pop() 弹出最后一个 pop(1)弹出指定元素
    pop(index) 弹出指定位置的元素
    remove() 移除xxx元素
    clear()清空列表
    del[6:2:1] 索引和切片
    3. 改: 根据索引修改.
    4. 查询: for循环
    for el in lst:
    for i in range(len(lst)):
    2. 列表的常用功能
    1.count()
    2.index()
    3.sort() 排序
    4.sort(reverse = True)倒序
    5.reverse() 翻过来
    3. 列表的嵌套
    降维操作。 一层一层的找
    4. 元组。相关操作
    tuple: 只读列表。由() 组成。特点:不可变
    如果只有一个元素。 末尾加逗号("sdd",)
    不可变: 元素内部第一层元素的内存地址

    day5:
    字典中的key是不能重复的。 存储是依靠着key来计算的
    字典是使用hash算法计算key的哈希值. 使用哈希值来存储数据

    哈希算法得到的是一个唯一的数字(可能是正数, 可能是负数, 很大或者很小)
    哈希算法是无序的

    字典中的key必须是可哈希的, 不可变的就是可哈希的

    不可变: 字符串, 元组, int, bool
    可变的: list, dict, set
    【增删改查】
    1. 增加
    dic[key] = value
    setdefault(key, value)
    给dict中的Value添加新值不覆盖>>>>>>>>>>>>>>?

    2.删除
    pop(key)
    popitem() 随机删除
    del dic[key]
    clear()
    3.修改
    dic[key] = value
    dic1.update(dict2)
    dict修改key>>>>>>>>>>>>>>>>>>>>>>>>>>>
    a = {"yuntian":"zero", "Alex":"Li"}
    a["Yuntian"] = a.pop("yuntian")
    print(a)
    # a.update(Yuntian = a.pop("yuntian"))

    4. 查询
    dic[key] 可能会报错
    dic.get(key)
    dic.setdefault()
    dic.values()显示所有values的值,像列表但不是列表
    dic.items()所有键对值
    字典的迭代:
    for k, v in dic.items():
    print(k, v)
    for k in dic:
    dic[k]

    # lst = [11,22,33,44,55,66,77,88,99]
    # dic = {}
    # for el in lst:
    # if el > 66:
    # dic.setdefault("key1", []).append(el)
    # else:
    # dic.setdefault("key2", []).append(el)
    # print(dic)


    day6:
    is 判断内存地址是否一致
    == 判断内容是否一致
    python2中用的是ascii
    python3用的是unicode
    字符串如果传输:
    encode(编码) 结果是bytes类型
    接受到bytes之后。 需要解码
    decode(编码). 结果是字符串
    s.encode("utf-8")
    # 缓存: 为什么有缓存。 缓存有什么问题,数据安全.google(自己盖发电厂。)
    # 数据是保存在硬盘上。 硬盘的读写速度是很慢的. 72mb/s
    # 把数据存储在内存中进行缓存。 1g/s
    # 加大数据吞吐量
    # 分布式. 异地部署

    day7:
    1. join: 把列表中的数据进行拼接。 拼接成字符串,如果有数字类型,可以用str强制转换成字符
    "_".join(lst)
    2. 关于删除:
    列表和字典在循环的时候都不能删除。
    把要删除的内容保存在新列表中。 循环新列表。 删除老列表(字典)
    # 把要删除的内容记录在一个新列表中
    # new_lst = []
    # for el in lst:
    # new_lst.append(el)
    # # 循环这个新列表. 删除原来的列表
    # for el in new_lst: # 不会导致循环的列表的元素移动问题
    # lst.remove(el) # 注意, 删除的是老列表

    # lst = ["王大锤", "王有才", "张小白", "刘大哥"]
    # # 删除掉姓王的
    # new_lst = [] # 装要删除的内容
    # for el in lst:
    # if el.startswith("王"): # 判断字符串是否以xxx开头
    # new_lst.append(el)
    # # 执行删除
    # for el in new_lst:
    # lst.remove(el)

    3. fromkeys
    dict.fromkeys(iter, value)
    把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典
    坑1: 返回新字典。不会改变原来的字典 [看代码]
    dic = {}
    dic.fromkeys(xxx, xxx)
    print(dic) # {}
    坑2: 【看代码】
    d = fromkeys(xxx.[])
    字典中的所有的value都是同一个列表
    4. set集合
    特点:无序不重复。 内部元素必须可哈希
    1. add() 添加
    让列表变成元祖set(lst)
    5. 深浅拷贝(画图理解)
    1. = 赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址
    2. copy() [:] 浅拷贝。 拷贝第一层内容
    3. 深拷贝
    import copy
    copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份
    作用: 快速创建对象

    day8:
    文件操作【重点来了】:
    1. 文件操作 open() 文件句柄
    open()打开一个文件, 获取的是文件句柄
    read()
    readline() 读取第一行
    readlines() 一次性全都读取出来, 返回的是列表
    write()

    for line in f: 遍历文件中的内容

    路径的问题:
    1. 绝对路径
    从磁盘根目录寻找 windows下用的就是c,d,e,f, linux: userinxxxx
    2. 相对路径
    从当前程序运行的文件夹内寻找 ../ 表示上一层文件夹
    n 转义字符。 有固定的含义的。 推荐用r
    open(r"E:哈哈 护士模特少妇.txt", mode="r", encoding="utf-8")
    2. 文件操作的相关模式Mode
    r: 只读
    w: 只写
    a: 追加
    r+:
    w+:
    a+:

    非文本文件
    rb
    wb
    ab

    r+b
    w+b
    a+b

    3. 相关操作
    1. seek()移动光标(重点)
    seek(0) 开头
    seek(0,2) 移动到末尾
    2. tell() 获取光标所在的位置
    3. truncate(3) 截断文件从头截取到3
    # seek(参数1, 参数2)
    # 参数1表示的是偏移量,移动多少个单位
    # 参数2表示从什么位置进行偏移
    # 0: 开头
    # 1: 当前位置
    # 2: 末尾

    # 把光标移动到文件的开头: seek(0)
    # 把光标移动到末尾: seek(0, 2)

    4. 文件修改
    with open(xxx) as 句柄,
    open(xxxxx)as xxx
    不用手动关闭文件句柄

    文件修改的步骤
    1. 从源文件中读取数据。
    2. 写入到副本文件中
    3. 删除源文件
    4. 把副本重命名成源文件
    import os
    os.remove()
    os.rename()

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<必须要掌握>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    # 文件句柄是一个可迭代对象
    # f = open("胡辣汤", mode="r", encoding="utf-8")
    # for line in f: # 读取文件中的内容。 一行一行的读取。 每次读取的内容交给前面的变量
    # print(line.strip())
    1、文本文件的复制(04)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    f1 = open(r"c:日记本.txt", mode="r", encoding="utf-8")
    f2 = open(r"d:日记本.txt", mode="w", encoding="utf-8")
    for line in f1: # 从f1中读取数据
    f2.write(line) # 写入到f2中
    f1.close()
    f2.close()
    2、文本文件修改>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    import os # 导入os模块
    import time # 时间模块
    with open("唐诗", mode="r", encoding="utf-8") as f1,
    open("唐诗_副本", mode="w", encoding="utf-8") as f2:
    for line in f1:
    line = line.replace("善良", "sb")
    f2.write(line)
    time.sleep(5)
    os.remove("唐诗") # 删除源文件
    time.sleep(5)
    os.rename("唐诗_副本", "唐诗") # 把副本改名成源文件
    3、文本文件里列表变成字典>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    '''
    编号,名称,价格,数量,仓库,phone
    1,榴莲,500,60000,1号仓库,10010
    2,苹果,700,70000,2号仓库,10086
    1,榴莲,500,60000,1号仓库,155
    2,苹果,700,70000,2号仓库,166
    '''
    '''变成
    [{'编号': '1', '名称': '榴莲', '价格': '500', '数量': '60000', '仓库': '1号仓库', 'phone': '10010'},
    {'编号': '2', '名称': '苹果', '价格': '700', '数量': '70000', '仓库': '2号仓库', 'phone': '10086'},
    {'编号': '1', '名称': '榴莲', '价格': '500', '数量': '60000', '仓库': '1号仓库', 'phone': '155'},
    {'编号': '2', '名称': '苹果', '价格': '700', '数量': '70000', '仓库': '2号仓库', 'phone': '166'}]
    '''
    f = open("水果.data", mode="r", encoding="utf-8")
    titles = f.readline().strip() # 读取第一行 id,name,price,num
    t_list = titles.split(",") # 【id,name,price,num】
    lst = []
    for line in f: # "1,苹果,500,60000" {id:1,name:liulian, num:xx, price:xxx}
    dic = {}
    ll = line.strip().split(",")
    for i in range(len(t_list)):
    dic[t_list[i]] = ll[i]
    lst.append(dic)
    f.close()
    print(lst)
  • 相关阅读:
    MYSQL
    数据中台的思考与总结
    基于SpringCloud分布式架构
    java常用工具库使用
    String性能提升10倍的几个方法
    Validator 注解使用
    【数据结构】trie树
    几种排序算法小结
    Core data的batch update
    UIScrollView和UIPageControl结合实现图片浏览
  • 原文地址:https://www.cnblogs.com/searchforyou/p/9947083.html
Copyright © 2011-2022 走看看