WEEK2:列表、字典、集合

  • 标准库
    • sys
      • sys.path  #打印环境变量
      • sys.argv  #打印相对路径,pycharm中显示绝对路径
    • os
      • cmd_res=os.system("dir")  #执行dir命令,命令输出显示在终端,cmd_res为状态码
      • cmd_res=os.popen("dir")   #执行dir命令,命令输出到cmd_res中,想要读取结果,使用cmd_res.read()
      • os.mkdir("new_dir")  #创建目录
      • os.mkdirs("new_dir/new_new_dir")  #创建多级目录
    • .pyc文件
      • PyCodeObject是Python编译器真正编译的结果,存在于内存中
      • 当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中
      • 下次运行时直接加载pyc文件。当然运行时会检测py和pyc的修改时间,选择时间最新的
  • 数据类型
    • 数字
      • int 整型
      • float 浮点型
      • complex 复数
    • 布尔值
      • 真或假,1或0
    • 字符串
      • 创建一个字符串就需要在内存中开辟一块连续的空间,一旦修改字符串,需要再次开辟空间,万恶的+号没出现一次就会在内存中重新开辟一块空间,因此能不用+号的时候尽量不用,字符串转成二进制 stringcontain.encode(encoding='utf-8')
    • bytes类型
      • 字节数据类型,即二进制数据,二进制转成字符串 bytescontain.decode(encoding='utf-8')
  • 三元运算
    • result = 值1 if 条件 else 值2
      条件为真,result=值1;否则, result=值2

  • 列表
    names=["zhangyang",''guyun","xiangpeng","xuliangchen","zhangyang",["alex","jack"]]
    names2=[1,2,3]
    • 切片:
      names[1:2] 为["guyun"]
      names[-1] 为["xuliangchen"]
      names[-2:] 为["xiangpeng","xuliangchen"]
    • 插入
      末尾追加 names.append("leihaidong")
      插入guyun前面 names.insert(1,"chenronghua")
      将names2扩展到names中 names.extend(names2)
    • 改写
      将guyun改为xiedi names[2]="xiedi"
      将列表反转 names.reverse()
      将列表排序 names.sort() #按照ASCII顺序排序
    • 删除
      删除xiangpeng names.remove("xiangpeng") 或者 del names[2] 或者 names.pop(2) #pop不加索引2,则默认删除最后一个
      清空列表 names.clear()
      删除列表 del names
    • 查询
      查询guyun的索引位置 names.index("guyun")
      统计zhangyang出现的次数 names.count("zhangyang")
    • 复制
      • 浅复制
        • 解释:浅复制只能复制列表的第一层(列表的第一层,就是names中的zhangyang、guyun等元素,列表的第二层是alex、jack等元素)
        • 方法:
          p1=names.copy()
          p1=person[:]
          p1=list(names)
          或者使用copy模块
          import copy
          p1=copy.copy(names)
      • 深复制
        • 解释:开辟另外一块地址空间,存放同样的数据,原始数据改变之后,不影响复制的数据
        • 方法:
          import copy
          p1=copy.deepcopy(names)
  • 元组:简单理解为只读列表,使用(),只有count和index这两个方法

  • 字符串的操作
    • 首字母大写 name.capitalize()
    • 统计字符串中a的个数 name.count("a")
    • 打印50个字符,使用-补齐,且将字符串放在中间 name.center(50,"-")
    • 判断字符串是否以ex结尾或者开始 name.endswith("ex")  name.startswith("ex")
    • 将字符串中的\t转成30个空格 name.expandtabs(tabsize=30)
    • 查找name在字符串中的起始索引位置 name.find("name")
    • 将name字符串中的{name}和{year}替换成alex和23 name.format(name='alex',year=23)
    • 效果同上 name.format_map( {'name':'alex','year':23} )
    • 是否为只包含数字和字母的字符串 name.isalnum()
    • 是否为纯英文字符串 name.isalpha()
    • 是否为纯数字(是否为十进制数字) name.isdecimal()
    • 是否为整数 name.isdigit()
    • 判断是不是一个合法的标识符(变量名) name.isidentifier()
    • 和name.isdigit()差不多的效果 name.isnumeric()
    • 是不是空格 name.isspace()
    • 判断每个单词的首字母是否大写 name.istitle()
    • 将列表变成 字符串,元素与元素之间使用+号连接 "+".join(['1','2','3'])
    • 补齐为50个字符,不足使用*在末尾补齐 name.ljust(50,"*")
    • 补齐为50个字符,不足使用*在开始补齐 name.rjust(50,"*")
    • 将字符串变为小写或者大写name.lower() name.upper()
    • 从左边或者右边或者全部去掉空格和回车 name.lstrip() name.rstrip() name.strip()
    • 将a对应为1,b对应为2...f对应为6 p=str.maketrans("abcdef","123456") print("alex li".translate(p)) 结果为"1l5x li"
    • 将a替换成x,只替换一个 name.replace("a","x",1)
    • 最右边那个e的索引 name.rfind('e')
    • 将字符串按照空格转成列表 name.split()
    • 按照换行来将列表转成列表 name.splitlines()
    • 大写变小写,小写变大写 name.swapcase()
    • 将每个单词的首字母变成大写 name.title()
    • 用0在字符串开头填充为50长度 name.zfile(50)
  • 字典操作
    info={'stu1101':"tenglan wu",'stu1102':"longze luola",'stu1103':"xiaoze maliya"}
    b={'stu1101':"alex",1:3,2:4}
    • 查找 info["stu1101"] (查询value)  info.get("stu1101")(不会报错的查询,安全的获取方法)  "stu1104" in info(查询stu1104是否在info中)
    • 修改或者添加 info["stu1101"]="WTL"  info["stu1104"]="cangjingkong"
    • 删除 del info["stu1101"] 或者 info.pop("stu1101")
    • 取所有的键、值、键值对 info.keys()  info.values() info.items()(可以将字典转成列表)
    • 如果键存在则不修改,不存在则新建键值对 info.setdefault("大陆",{"xx":"asd"})
    • 将b中的键值对更新和添加到info中 info.update(b)
    • 初始化一个字典 c=dict.fromkeys([6,7,8],"test")  #“test”属于类似浅复制
    • 循环字典的方式
      • 高效的方式
        for i in info:
            print(i,info[i])
      • 低效的方式(存在一个将字典转成列表的过程)
        for k,v in info.items():
            print(k,v)
posted @ 2019-05-07 23:05  飞琼君  阅读(111)  评论(0编辑  收藏  举报