• 【python之路9】类型定义与转换


    一、整型(int),int的作用

    1、创建int类型并赋值

    n = 10

    或者

    n = int(10)   #只要是类名加括号,都会去执行类中的 __init__()方法

    n = 10,实际内部会去执行 n=int(10),实际又会去执行类中的 __init__()方法

    n = int() #定义整数0

    b1 = int('0b100',0)  #二进制转化为十进制
    b2 = int('0b100',2)  #二进制转化为十进制
    print(b1,b2)  #4 4
    
    class MyInt(object):
        def __init__(self):
            print("INIT")
        def __call__(self, *args, **kwargs):
            print("CALL")
    
    obj = MyInt()  #打印输入INIT,自动回去调用类中的init方法
    obj() #打印输出CALL,自动回去调用类中的call方法
    

     2、int地址优化

    n1 = 123
    n2 = 123
    print(id(n1))  #id()是查看变量或对象的内存地址,结果打印:1713990656
    print(id(n2))  #id()是查看变量或对象的内存地址,结果打印:1713990656
    #说明n1和n2是共用的同一个内存地址
    
    #python2.7中-5-257是共用的同一内存地址,但是 n1=111111  n2=n1也是共用同一内存地址
    #python3中所有的整形都是共用同一内存地址
    
    #这是python对内存地址的优化
    

    3、把其他类型转换为int类型

    st = '10' #定义一个数字字符串
    n = int(st) #将字符串转换为int
    print(type(n)) #输出<class 'int'>,说明转换为int类型
    

    二、字符串类型,(str)的作用

    1、创建str类型并赋值

    st = 'hello world!'

    或者

    st = str('hello word!')

    st = str() #定义空字符串

    2、将其他类型转化为字符串类型

    num = 123  #int类型
    st = str(num) #将int类型转换为str类型
    print(type(st)) #输出<class 'str'>,说明转换为str类型
    

    三、bytes类型

    1、创建bytes类型并赋值

    byt = b'xe5xadx99'

    或者

    byt = bytes(b'xe5xadx99')

    2、将其他类型转换为bytes类型

    st = '孙'
    byt = bytes(st,encoding='utf-8')  #将字符串类型转换为字节型
    print(byt)  #输出b'xe5xadx99',说明成功转换为字节型
    

    同样可以将字节类型转化为字符串类型:

    st = '孙'
    byt = bytes(st,encoding='utf-8')  #将字符串类型转换为字节型
    print(byt)  #输出b'xe5xadx99',说明成功转换为字节型
    st_back = str(byt,encoding='utf-8') #将字节类型转换回字符串类型
    print(st_back)

    四、列表类型(list)

    1、创建列表类型

    lis = [11,22,33,44,55,66]

    或者

    lis = list([11,22,33,44,55,66])

    lis = lis() #定义空列表

    2、将其他类型转化为列表类型list(),括号里面是可迭代的,实际是for循环每个迭代的元素然后写进列表

    1)将字符串转化为l列表类型

    name = '王二麻子'
    name_list = list(name)  #将字符串转化为列表
    print(name_list) #输出['王', '二', '麻', '子']
    

    2)将元组转化为字典类型

    num = (11,22,33,44,55,66)
    num_list = list(num) #将元组转化为列表
    print(num_list) #输出[11, 22, 33, 44, 55, 66]
    

    3)将字典转化为列表

    a、将key值转化为列表

    dic = {'key1':'zhangsan','key2':'lisi','key3':'wangwu'}
    dic_list = list(dic) #将字典转化为列表
    print(dic_list) #输出['key1', 'key2', 'key3'],因为for循环时默认的就是循环keys
    

    b、将字典values转化为列表

    dic = {'key1':'zhangsan','key2':'lisi','key3':'wangwu'}
    dic_list = list(dic.values()) #将字典转化为列表
    print(dic_list) #输出['zhangsan', 'lisi', 'wangwu']

    c、将items转化为列表

    dic = {'key1':'zhangsan','key2':'lisi','key3':'wangwu'}
    dic_list = list(dic.items()) #将字典转化为列表
    print(dic_list) #输出[('key1', 'zhangsan'), ('key2', 'lisi'), ('key3', 'wangwu')]
    

     五、元组(tuple)

    1、元组和列表基本功能一样,但其主要特性为:元组的元素不可修改,但元组的元素的元组可以修改

    例如:将下面元组中的字典中加入"k2":123

    t = (11,22,['zhangsan',{'k1':'v1'}])

    t = (11,22,['zhangsan',{'k1':'v1'}])
    t[2][1]['k2']=123
    print(t) #返回(11, 22, ['zhangsan', {'k1': 'v1', 'k2': 123}])
    

     六、字典(dict)

    1、字典的创建

    di = {'key1':123,'key2':456}

    di = {}   di = dict()

    dic = dict(key1=123,key2=456) #会输出{'key1': 123, 'key2': 456}

    2、字典的转换

    li = [11,22,33,44,55,66]
    dic = dict(enumerate(li,1))#输出{1: 11, 2: 22, 3: 33, 4: 44, 5: 55, 6: 66}
    

    3、fromkeys简介

    dic = {'key1':123,'key2':456,'key3':567}
    di =  dic.fromkeys(dic) #di={'key1': None, 'key2': None, 'key3': None}
    di['key1']='aaa' #di={'key1': 'aaa', 'key2': None, 'key3': None}
    
    dic = {'key1':123,'key2':456,'key3':567}
    new = dic.fromkeys(['key1','key2','keys3','key4'],'aa') #new = {'key1': 'aa', 'key2': 'aa', 'keys3': 'aa', 'key4': 'aa'}
    dic = {'key1':123,'key2':456,'key3':567}
    new = dic.fromkeys(['key1','key2','keys3','key4'],'aa') #new = {'key1': 'aa', 'key2': 'aa', 'keys3': 'aa', 'key4': 'aa'}
    new['key1'] = 'abc' #new ={'key1': 'abc', 'key2': 'aa', 'keys3': 'aa', 'key4': 'aa'}
    dic = dict.fromkeys(['key1','key2']) #{'key1': None, 'key2': None}
    dic['key1']='abc' #{'key1': None, 'key2': None}
    
    dic = dict.fromkeys(['key1','key2','key3'],[])
    dic['key1'].append('xx') #dic={'key1': ['xx'], 'key2': ['xx'], 'key3': ['xx']}
    dic = {"key1":[],'key2':[],'key3':[]}
    dic['key1'].append('xx') #dic ={'key1': ['xx'], 'key2': [], 'key3': []}
    

    由此可见,利用fromkeys创建的values为列表的字典,其所有key对应的是同一内存的列表。


    @staticmethod # known case静态方法
    如果方法上面没@staticmethod,那么必须用 对象.方法名 进行调用
    如果方法前面有@staticmethod,那么可以直接用类名.方法名 进行调用
  • 相关阅读:
    面试官本拿求素数搞我,但被我用素数筛优雅的“回击“了
    手写玩具
    【LeetCode】5638.吃苹果的最大数目
    【LeetCode】290.单词规律(双映射)
    【LeetCode】42.接雨水
    【LeetCode】84.柱状图中最大的矩形
    【LeetCode】135.分发糖果
    【Leetcode】746.使用最小花费爬楼梯
    【LeetCode】316.去除重复字母
    【LeetCode】三题解决常见异或运算题
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/6279941.html
Copyright © 2020-2023  润新知