• python学习笔记——贰


    第二周

    模块   相当于java导包

    标准库 不用安装

    第三方  需要安装

    Python处理excel  xlrd模块  XlsxWriter 模块

     

    windows安装库很简单  python2执行  pip install pyexcelerator(模块名)

    Python 执行  pip3 install XXXXXX(模块名)

     

    创建包的名字和python文件的名字不能和 (模块名)库名一样,否则会调取自身

    import sys

    # 打印环境变量
    print(sys.path)
    #打印当前文件的路径
    print(sys.argv)

    import os  和系统交互比较多

    #创建文件夹或者文件

    os.mkdir("C:/Users/Administrator/Desktop/day02/")

    #打印当前文件目录的列表

     cmd= os.popen("dir").read()
     print(cmd)

    python执行先编译器   后解释器   .pyc文件是介于编译后的文件

    type(2)判断数据类型

    python中的数据类型

    python2中如int超范围之后会自动转成long型(在32位机器当中int类型是 2的32次方   32位机器当中int类型是 2的64次方

    python3中  进行了优化 int超范围后还是int类型 可以正常使用

    string和bytes

    python2中 str和bytes可以混用 互相拼接

    python3 对str和bytes类型有看更明确的区分 不会隐式转换

     

    机器之间的相互的传输都是使用的二进制 bytes

    #字符串转bytes
    str="我是"
    print(str.encode('utf-8'))

    #bytes转string
    str2=b'xe6x88x91xe6x98xaf'.decode('utf-8')
    print(str2)

     

    输出如下

     

    布尔类型

    python中首字母是大写

    True

    False

    求余数 %

     

    返回除的整数部分

     

     

     

     

     

    64 32 16 8 4 2 1

    64>>2   =  16  相当于 除以22次方 64/4

    64>>3   =   8  相当于 除以23次方 64/8

    移几位就相当 除以几的2次方  

    以上的这种运算比 正常的除法快很多 <<相当于乘法 同理

    三元运算

    print("111") if 1>2 else print("222")

    输出 222  左边位置是条件正确的结果 中间是条件 esle 右边是条件错误的结果

    关于列表

    name=["s",1,"qq"]
    # 切片取数据 顾头不顾尾 取数据最后一位 要给给最后位置+1
    print(name[0:3])
    #或者不限制直接 :
    print(name[0:])
    #或者 输入负数 代表倒着数
    print(name[-3:])

     

    结果如下

     

     

    #给最后一个位置增加元素
    name.append("sssss")
    #给指定位置添加元素
    name.insert(1,'kkkk')

    #删除元素,指定元素
    name.remove("kkkk")
    #删除指定位置的元素
    name.pop(2)

    #空白,删除最后一个元素
    name.pop()

    #通过元素,得到他的位置下标
    name.index("sssss")

    #清空列表
    name.clear()

    #统计列表里有多少相同的元素
    print(name.count("sssss"))

    #对列表的顺序进行反转  
    name.reverse()

    #列表排序 排序的优先级如下 特殊符号>数字>大写字母>小写字母
    name.sort()

     

    和并列表 name2 列表合并到 names 中  name2依然存在  

     

    .copy,是浅copy,会复制第一层,如果里边 在套一个列表A,那么 列表A就会指向同一个内存地址,可以实现类似联合账号的效果,一个账户花钱,总账户都减少

    copy.deepcopy() 是深度copy  完全复制一份

    需要导入 import copy

    import  copy
    name1=["aaa",'bbb',"ccc",['100','fff']]

    #浅copy
    name2=name1.copy()

    #深度copy
    name3=copy.deepcopy(name1)
    name1[3][0]="50"
    print("name1: ",name1)
    print("name2: ",name2)
    print("name3: ",name3)

    输出如下 name2[3][0]随着name1的改变,而改变  name3不会变  在列表套列表会发生

    得到列表的长度 len()

    intaa=[1,3,4,5,7,55,5555,43]
    print(len(intaa))

     

    输出如下

     

    列表循环

     

    跳着进行切片 隔一个取一个

    如果是 第一个下标,或者是最后一个下标 可以忽略 下边两个种写法效果一样

     

    元组 一旦创建不能修改 不能添加  也被称为只读列表  只有两种方法

    name1=("aaa",'bbb','aaa')

    #统计相同元素个数
    print(name1.count("aaa"))

    #得到元素下标
    print(name1.index("bbb"))

    输入如下

    元组 tupl 转化为list 列表

    举个简单的例子,代码如下:
    a=(1,2,3)
    b=list(a)  #b是由a转化而来的

     

     

    结束整个程序  exit():

    字符串操作

     

     

    判断是否是整数格式,isdigit

     

    循环打印下标 和数据  名称是随便起的  enumerate

     

    数字颜色

    有很多种颜色 改变31这个数字即可

    33[31;1m 需要变色的字符 33[0m

    print("33[31;1m我是红色的33[0m")

    结果如下

     

    name = "my name is hanlei"
    首字母变大写
    print(name.capitalize())

     

    将所有字母都变成大写

    print(name.upper())

     

    将所有字母都变成小写

    print(name.lower())

     

    去掉左边的空格和回车
    print(" sdd ".lstrip())

    去掉右边的空格和回车
    print(" sdd ".rstrip())

    去掉两边的空格和回车
    print(" sdd ".strip())

     


    统计相同字符的个数
    print(name.count("a"))


    打印50个字符,位数不够“—”来凑
    print(name.center(50,'-'))

    输出如下

     

    “-”部位 在左边凑够50个

    print(name.rjust(50,"-"))

    输出如下

     

     

    “-”部位 在左边凑够50个

    print(name.ljust(50,"-"))

    输出如下

     

    判断字符串以什么结尾的 返回的结果是 True 或者 False

    print(name.endswith("lei"))

     

    变成30个空格
    name = "my n ame is hanlei"
    print(name.expandtabs(tabsize=30))

    find可以获取字符串的下标 用它也可以切分字符串 如果查不到 返回-1

    name = "my name is hanlei"
    print(name [name.find("h"):-2])

     

    fina相类似  如果查不到 会抛异常

    print(name.index("m"))

     

    判断字符串是否 包含字母和数字 返回True False

    print("Ab222".isalnum())

    判断字符串是否 包含字母 返回True False
    print("Bbc".isalpha())

    判断字符串是否是整数 返回True False
    print("655".isdigit())

    判断字符串是否是 合法的变量名 不能以数字,特殊字符开头 等等 返回True False
    print("a_sss".isidentifier())

     

    判断首字母是否是 大写  返回True False

    print("My Name Is".istitle())

     

    判断所有字母是否是 大写  返回True False
    print("MY NAME IS".isupper())

     

    join用于把列表中的元素,按什么分隔出来

    print("+".join(['1','2','3']))

     

    输出如下

     

    对字符串进行对照(替换)处理 hanlei  6个字母分别 对应123456

    对应的是单个字符,并非是整个字符串

    p=str.maketrans("hanlei","123456")

     

    p 传入到 translate()中,对 hanleiqqqqq 进行 替换

    print("hanleiqqqqq".translate(p))

     

    输出如下 看到 hanlei已经被转成 123456

     

    替换字母,替换h为w,替换2个

    print("han lei hh".replace("h","w",2))

    输出如下

     

     

    得到 字母h 最右边位置的下标

    print("han lei hh".rfind("h"))

    输出如下

    9

     

    对字符串进行切分 可以是空格“”,可以是 ,也可以是任意的字符

    切分后会变成一个列表

    print("han lei hh".split(" "))

    输出如下

     

    把字符串按照行进行切分,可以被上一种代替,但在不同系统换行符,是不一样的

    用它,可以不用考虑是什么系统

    a="han lei hh".splitlines()

     

     

    字母大小写颠倒

    print("HAN lei hh".swapcase())

    输出如下

     

    截取字符串 输入下标截取

    str="HAN lei hh"

    str[1:4]

     列表格式的字符串 转化成 列表

    str2="[['a a',2], [3,4], [5,6], [7,8], [9,0]]"
    a=eval(str2)
    print(type(a))
    print(a)

     

    输出如下

     

     

    字典操作 map

    字典是无顺序的 ,没有下标位置,靠key存取

    创建一个字典

    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }

     

    修改和增加  通过key如果存在就修改,不存在就增加

    info["stu1104"] = "苍井空"

     

    删除  指定key的 元素

    info.pop('stu1101')

    随机删除一对,但一般都删除末尾对

    info.popitem()

     

    获取

    存在取出 不存在返回None

     

    info.get("stu1102") 

     

    取出所有的key

    info.keys()

    取出所有的value
    info.values()

     

    判断

    判断stu1104在不在,如果在就返回True,不在就返回False

    print('stu1104' in info)

     

    python2中是如下这种写法

     

    info.has_key("1103")

    判断'stu1103'在不在,如果在就返回已有的结果,不做改变。如果没有,就增加

    中间是逗号

    info.setdefault('stu1103',"chongtianxingling")

    合并 update info中相同的key会被b取代

    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }

    b ={
        'stu1101': "Alex",
        1:3,
        2:5
    }

    info.update(b)

    输出如下

     

    把字典转化为列表

    print(info.items())

    输出如下

     

    初始化一个字典,并赋一个默认值

    注意:此方法赋的默认值如果只有一层,会复制,是独立的。

                          如果有多层,就变成地址引用。改其中一个值,其他的都会变。

    c=dict.fromkeys(["a","b","c"],["test"])
    print(c)

    输出如下

     

     

    字典循环 

    方法1:

     i循环的是key  info[i]循环的velue

    info = {
        'stu1101': "TengLan Wu",
        'stu1102': "LongZe Luola",
        'stu1103': "XiaoZe Maliya",
    }

    for i in info:
        print(i,info[i])

     

    输出如下

     

    方法2:

    和上一种比效率较低,先把字典转成列表,再进行输出,数据量

    大的时候会非常慢

    for k,v in info.items():

        print(k,v)

    pass占位符 什么也不做

     

    字符串和列表写入文件

    把下边这个列表写入文本

    product_list = [
        ('Iphone',5800),
        ('Mac Pro',9800),
        ('Bike',800),
        ('Watch',10600),
        ('Coffee',31),
        ('Alex Python',120),
    ]

    写入:

    #先打开一个文件,用操作,没有会自己创建 w是写权限,

    files = open("shopping_cart.txt","w") # "w"

    #这一步就把列表转成了字符串,“”是随便写的,加个“ww”也行,目的就是转下格式

     但类型还是list,不知为啥
    product_list.append(" ")

    #循环列表 循环写入,每次打印都加个,号
    for i in product_list:
        files.write(str(i))
        files.write(",")

    #关闭连接
    files.close()


    读取:

    # r是读权限
    f = open("shopping_cart.txt","r") # "w"

    #读取一行
    first_line = f.readline()

    #这个文件用的是上边写入的那个,末尾多了东西,切片取
    str=first_line[0:-3]

    #用这个函数转字符串为列表
    b=eval(str)
    print(b)

  • 相关阅读:
    省队集训Ⅱ-Day5
    省队集训Ⅱ-Day4
    省队集训Ⅱ-Day3
    省队集训Ⅱ-Day2
    省队集训Ⅱ-Day1
    并查集 Pro
    树上带修: 莫队Ⅳ
    树上骗分: 莫队Ⅲ
    带修骗分: 莫队Ⅱ
    骗分带师: 莫队Ⅰ
  • 原文地址:https://www.cnblogs.com/HL-blog/p/7348598.html
Copyright © 2020-2023  润新知