zoukankan      html  css  js  c++  java
  • 3 python --运算符和数据类型

    运算符

    算数运算

    比较运算

    赋值运算

    逻辑运算

     数据类型

    常用的数据类型:数字(整形,长整型,浮点型,复数),字符串,列表,元组,字典,集合

    1整形

    整数类型的范围是2**32,其中包含正数和负数(2的31次方个正和2的31次方的个负数)

    PS:查看一个数据的类型使用type(数据)方法

    #int(整型)
    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
    在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
    #long(长整型)
    注意:在Python3里不再有long类型了,全都是int
    >>> a= 2**64
    >>> type(a)  #type()是查看数据类型的方法
    <type 'long'>
    >>> b = 2**60
    >>> type(b)
    <type 'int'>
    
    #complex复数型
    >>> x=1-2j
    >>> x.imag
    -2.0
    >>> x.real
    1.0
    
    其他数据类型(了解部分)
    View Code

    2浮点型

    浮点类型就是带小数点的,多余的位数会四舍五入

    a=2.5555
    b=1.545
    type(a)
    float #float代表浮点数
    print(round(a,2))
    print(round(b,2))
    #round(float,2)
    #小数点精确的最后一位必须为偶数
    View Code

     3字符串

    name = 'alex' #str类的对象
    v = name.capitalize() #首字母大写
    print(v)
    
    name = 'AleX'
    v = name.casefold() #转换成小写,应用更广,英文、德语等
    v = name.lower() #转换小写,主要是英文,跟upper()相反
    print(v)
    name ='alex'
    v =name.center(20,'*')
    print(v)
    name = "aniefnaodoiwjcaanoenfaiw"
    v = name.count('a',12,15)
    #计算传入参数的个数
    # 起始位置(索引)
    # 结束位置(索引)
    print(v)
    
    name = 'alex'
    # 是否以ex结尾
    v1 = name.endswith('ex')
    print(v1)
    # 是否以al开头
    v2 = name.startswith('al')
    print(v2)
    
    找到制表符	,进行替换(包含前面的值)
    name = "a1	e	x
    alex	uu	kkk"
    v = name.expandtabs(20) #	的tab变成20倍
    print(v)
    
    找到指定子序列的索引位置,不存在返回-1
    name = 'alex'
    v = name.find('l')  #
    print(v)
    找索引,不存在则报错
    v = name.index('a')
    
    name = '我是%s,xxxx' %a
    tp1 = "我是:{0};年龄:{2};性别:{1}"
    v= tp1.format('李杰',19,'都行')
    # v = tp1.format("alex",19,'ok')
    print(v)
    
    tp1 = "我是:{name};年龄:{age};性别:{gender}"
    v = tp1.format(name='alex',age=19,gender='any')
    print(v)
    
    tp1 = "我是:{name};年龄:{age};性别:{gender}"
    # v = tp1.format_map('name'='alex','age'=19,'gender'='any')
    v = tp1.format_map({'name':'alex', 'age':19, 'gender':'any'}) #在format_map中传入的为字典形式
    print(v)
    
    
    name = 'alex8好'
    v = name.isalnum()  #判断是否是字母字数汉字,不能包含特殊字符
    print(v)
    v2 = name.isalpha()
    print(v2)
    
    判断是否是数字
    num = '123'
    v1 =num.isdecimal() #123
    v2 =num.isdigit() #123,②
    v3 =num.isnumeric()  #123 ,二,②
    print(v1,v2,v3)
    
    n ='class'
    v =n.isidentifier()
    print(v)
    
    是否全部是小写或大写
    name = 'ALEx'
    v = name.isupper() #islower()
    print(v)
    
    
    全部转换成大写(小写) 比如验证码
    name = 'alex'
    v = name.upper() #name.lower()
    print(v)
    
    是否包含隐含的字符类
    name = "钓鱼要钓刀鱼,
    刀鱼要到岛上钓"
    v =name.isprintable()
    print(v)
    
    
    是否全部是空格
    name ='alex'
    v = name.isspace()
    print(v)
    
    
    元素拼接(元素字符串) ***** 必须会
    name = 'alex'
    # v = "_".join(name) #内部循环每个元素
    # print(v) #打印结果  a_l_e_x
    for i in ['海峰','杠娘','李杰']:
        print(i)
    name_list = ['海峰','杠娘','李杰']  #元素只能是字符串,不能是数字
    v = "".join(name_list)
    print(v)
    
    
    左右填充
    center,rjust,ljust
    name ='alex'
    v = name.ljust(20,'*')
    print(v)
    
    对应关系 + 翻译
    name = 'anwoidwoidhawoidhwaoihofeiowiiejaoiej'
    m = str.maketrans('aeiou','12345') #对应关系
    v = name.translate(m)
    print(v)
    
    
    分割,保留分割的元素  应用:计算器
    content = '李泉SB刘康'
    v = content.split('SB')
    v = content.partition('SB')
    print(v)
    
    替换
    content = '李泉SB刘康SB刘浩SB打好'
    v = content.replace('SB',"love",1)  #替换次数为1
    print(v)
    
    可指定分割符
    name ='alex
    '
    v = name.strip() #去除空白, 	,
    
    print(v)
    
    
    大小写转换
    name = 'Alex'
    v =name.swapcase()
    print(v)
    
    填充0的个数
    name = 'alex'
    v =name.zfill(20)
    print(v)
    
    
    v1 = 'alex'
    v2 = 'eric'
    v = v1 + v2 #执行v1的__add__功能
    print(v)
    
    字符串功能总结:(常用)
    name = 'alex'
    name.upper()
    name.lower()
    name.split()
    name.find()
    name.strip()
    name.startswith()
    name.format()
    name.replace()
    'alex'.join(['a','bb'])
    ####额外功能:
    name[0]
    name[0:3]
    name[0:3:2]
    len(name)
    for循环,每个元素是一个字符
    View Code

    4列表

    列表由一系统按特定顺序排列的元素组成,在python中用[]表示列表,并用逗号分隔中间的元素

    执行功能;
    1.追加
    user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
    user_list.append('刘铭')
    print(user_list)
    2. 清空
    user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
    user_list.clear()
    print(user_list)
    
    3. 拷贝(浅拷贝)
    user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型
    v = user_list.copy()
    print(v)
    print(user_list)
    
    4. 计数
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    v = user_list.count('李泉')
    print(v)
    
    5. 扩展原列表
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    user_list.extend(['郭少龙','郭少霞'])
    print(user_list)
    
    
    6. 查找元素索引,没有则报错
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    v = user_list.index('小龙')
    print(v)
    
    7. 删除并且获取元素 - 索引
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    v = user_list.pop(1) #删除索引位置1的内容
    print(v)
    print(user_list)
    
    8. 删除 - 值
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    user_list.remove('刘一')
    print(user_list)
    
    9. 翻转
    user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型
    user_list.reverse()
    print(user_list)
    
    sort排序 直接修改原内容
    nums = [11,22,3,4,7,8]
    print(nums)
    v1 = nums.sort()
    print(nums) #排序从小到大
    nums.sort(reverse=True)  #排序从大到小
    print(nums)
    
    
    for i in range(10,0,-1): #倒序
        print(i)
    
    li = ['eric','alex','tony']
    for i in range(0,len(li)):
        ele = li[i]
        print(ele)
    
    li = ['eric','alex','tony']
    for i,ele in enumerate(li,1): #默认i从0开始,写上1则从1开始
        print(i,ele)
    
    v = input('请输入商品序列号:')
    v = int(v)
    item = li[v-1]
    print(item)
    View Code

    5元组

    不能修改的值称为不可变的,不可变的列表称为元组,在python中用()来标识

    ####元组:tuple  *** 不可被修改的列表,不可变类型
    user_tuple=('alex','eric','seven','alex')
    # v = user_tuple[0]
    #计数
    v = user_tuple.count('alex')
    print(v)
    #获取值的第一个索引位置
    v = user_tuple.index('eric')
    print(v)
    
    ###额外
    for i in user_tuple:
        print(i)
    v = user_tuple[0:2]
    print(v)
    
    
    user_tuple=('alex','eric','seven',['chentai','liuhao','james'],'alex') #元组整体不能被修改,元组内的列表可以修改
    user_tuple[3][1]='kobe'
    print(user_tuple)
    
    user_tuple=['alex','eric','seven',('chentai','liuhao','james'),'alex']
    user_tuple[3]='abc'
    print(user_tuple)
    #####元组最后,加逗号 (pay attention)
    li = ('alex',)
    print(li)
    View Code

    6字典

    一系列的键值对称为字典,在python中用{}来标识,一个键值,一个有效值,key-value形式表示

    #####字典:dict
    dic = {'k1':'v1','k2':'v2'}
    #清空
    dic.clear()
    
    #浅拷贝
    v = dic.copy()
    
    #效果相同,但是get不会报错,默认返回值None(111)
    v = dic.get('k1',111)
    v =dic['k1']
    
    #删除并获取对应的value值
    v =dic.pop('k1')
    
    #随机删除键值对,并获取到删除的键值
    k,v =dic.popitem() #('k2':'v2')
    
    #增加,如果主键存在则不增加
    dic.setdefault('k3','v3')
    print(dic)
    dic.setdefault('k2','111')
    print(dic)
    
    #批量增加或修改
    dic.update({'k3':'v3','k1':'v24'})
    print(dic)
    
    print(v)
    
    dic = dic.fromkeys(['k1','k2','k3'],123)
    dic['k1'] = 'ahsiwhi'
    print(dic)
    
    dic =dic.fromkeys(['k1','k2','k3'],[1,])
    {
       k1:123123, #[1,2]
       k2:123123, #[1,]
       k3:123123      #fromkeys在生成字典的时候,k1、k2、k3对应的内存地址相同,k1对应的value改变,其他的也跟着改变
    dic['k1'].append(222)
    print(dic)
    
    #####额外:
    字典可以嵌套
    字典key 必须是不可变类型(元组)
    dic = {
        'k1':'v1',
        'k2':[1,2,3],
        (1,2):'111',
        True:'11a',
        1:'a',
        False:'abc'
    }
    print(dic)
    
    key
       不可变
       True,1
    View Code

    7集合

    包含多个元素,中间用逗号(,)分割,标识为{},自带去重功能

    主要遵循三个原则

    1每个元素必须是不可变类型(可hash,可作为字典的key)

    2没有重复的元素

    3无序

    #####set:集合
    s1 = {'alex','eric','tony','kobe','kobe23'}
    s2 = {'alex','eric','tony','jame'}
    v = s1.difference(s2) #s1中有s2中没有
    print(v)
    
    v = s2.difference(s1) #s2存在s1不存在
    print(v)
    
    v = s1.symmetric_difference(s2) #差集,取两者中的不同
    print(v)
    
    v= s1.intersection(s2) #交集
    v=s1.union(s2) #并集
    
    ####s1中存在,s2中不存在,然后对s1情况,然后在重新赋值
    v = s1.difference_update(s2)
    s1.discard('alex') #移除
    s1.update({'alex','123123','fff'}) #更新增加
    
    print(s1)
    
    
    ####额外的
    v=s1[0] #不支持索引取值
    print(v)
    s1 = {'alex','eric',(1,2,3)} #集合里只能有元组,不支持列表,集合
    for i in s1:
        print(i)
    View Code

    数据类型总结

    数字
    字符串
    集合:无序,即无序存索引相关信息
    元组:有序,需要存索引相关信息,不可变
    列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
    字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改

    按存值个数区分

    标量/原子类型 数字,字符串
    容器类型 列表,元组,字典

    按可变不可变区分

    可变 列表,字典
    不可变 数字,字符串,元组

    按访问顺序区分

    直接访问 数字
    顺序访问(序列类型) 字符串,列表,元组
    key值访问(映射类型) 字典

    帮助查看

    help(sorted)

    类型转换 通过运用类型转换的函数,直接转换

    1 十六进制转换十进制  int()函数

    In:int('a',16)  //base是16,意思'a'是一个16进制的字符串

    Out:10

     2十进制转换十六进制  hex()函数

    In:hex(12)

    Out:'0xc'

    3字符串转换十进制  int()

    In:hex(10)

    Out:'0xa'

    In:eval(hex(10))

    Out:10

    4字典转换成列表  dic.items()

    In:dic={'a':1,'b':2}

    In:dic.items()

    Out:[('a',1),('b',2)]

    5列表转换成字典  dict(list)

    #列表必须由两个元素的列表或元组组成

    In:l1=dic.items()

    In:dict(l1)

    Out:{'a':1,'b':2}

    In:l2=['abc',123,('c',60)]

    In:dict(l2)

    6将纯数字的字符串或数字转换成长整型  long()   #在python3中取消了long ,将long的功能整合在了int内

    In:help(long)

    In:long(12)

    Out:12L

    7 将纯数字的字符串或者数字转换成浮点数  float()

    In:help(float)

    In:float(12)

    Out:12.0

    In:float('12.0')

    Out:12.0

    8把数字转换成复数  complex()

    In:complex(10)

    Out:(10+0j)

    In:complex('10')

    OutL:(10+0k)

    9把对象转换成字符串  str()

    In:str(12)

    Out:'12'

    In:str('abc')

    Out:'abc'

    In:str(('a',1))

    Out:"('a',1)"

    In:str([range(5)])

    Out:[[0, 1, 2, 3, 4]]

    In:print(str({'x':1,'y':2}))

    Out:{'y': 2, 'x': 1}

    10把可迭代对象转换成列表

    In:list('abc')

    Out:['a','b','c']

    In:list((1,2,3))

    Out:[1,2,3]

    11把可迭代对象转换成元组

    In:tuple('123')

    Out:('1', '2', '3')

    In:tuple(range(5))

    Out:(0,1,2,3,4)

  • 相关阅读:
    LeetCode206翻转链表问题,多解法求解
    使用GCC编译c源程序经历的几个步骤
    部分内置函数(不含面向对象型)
    Python初学1
    函数的作用域与匿名函数
    生成器函数以及生产消费模型
    【VC编译错误】error C2872: 'ofstream' : ambiguous symbol
    【C开发】无限循环 while(1) 和 for(; ;)
    【C开发】预编译处理命令(#define、typedef、#include、#运算符)
    编译DLL出现无法解析的外部符号
  • 原文地址:https://www.cnblogs.com/the-way-to-bifk/p/7695746.html
Copyright © 2011-2022 走看看