数据类型的常用操作和内置方法

  • 可变类型和不可变类型 

          其中可变类型的意义是,当数据的取值改变时,python并不会为它开辟一个新的内存去存放,而是直接在原来的内存地址即id中修改,相当于     数据还是在原来的内存空间中作出修改,并不会成为一个“见义忘利”的小人还是会知恩图报,回到最初创建它的地方因此这种人的待遇薪资自然是可以变化的(可变),并不会因为其他而跳槽。这样的类型主要是列表和字典

         不可变类型的意义是,当用户改变了该数据的取值,python会为其开辟一个新的内存空间存放修改完的数据,看到新的空间后,该数据表示不想再回到原来的地址,想要来新地方了。像这种数据稍微给他点好处就搬走的,他的好处待遇自然就不应该得到变化(不可变),这样的类型主要是整型,浮点型,字符串类型等。

         用代码就比较清晰地表示出来了:

  •  列表
  • li1= ['1','2','3','4','5']
    print(id(li1))     # 输出的是34088968
    li1.append(444)
    print(id(li1))     # 输出的是34088968
  • 整型

  • n = 99
    print(id(n))    # 输出的是 1584101920   
    n += 1
    print(id(n))    # 输出的是 1584101952
  • 整数类型(Integer)

  • 定义

  • kobe = 24   # kobe = int(24)
    print(kobe) # 输出24
    int('abececafasf')  
    int ('12.3')
    # 上面两个字符串中的内容都不属于整数类型 所以会报错
  • 常用方法:进制的转换(2进制,8进制,16进制)

  • print(bin(20))  # 输出0b10100
    print(oct(20))  # 输出0o24
    print(hex(20))  # 输出0x14
    
    #   十进制转换其他进制
  • print(int('1010',2))    # 输出10      二进制转十进制
    print(int('1010',8))    # 输出520     八进制转十进制     
    print(int('1010',16))   # 输出4112    十六进制转十进制
    
    #值得注意的是int()中的进制数必须是字符串类型,否则会被报错
  • 字符串类型

  • 常用操作

      1. 按索引取值和切片

  • a = 'kobe bryant'
    print(a[6])     # 正向按索引取值 第一个字符为0 依次按字符增加索引 
    print(a[-4])    # 反向按索引取值 最后一个字符的index为-1,之后从右往左依次减1
    
    
    
    print(a[0:2])   # 正向连续从第一个字符开始取一串字符,其中:后的数字代表着所要字符的长度 而且:前的数字务必是零
    print(a[6:2:-1])  # 反向按索引取值,步长为-1,从索引值往后取 其中的2代表着切片操作截止的索引值所代表的字符

      2. 长度

  • a = 'kobe bryant'、
    print(len(a))   # 包含空格的长度 输出的是11

      3. 成员运算 in or not in: 判断一个字符在不在目标字符串中;

  • print('kobe'in 'kobe bryant')    
    print('ddddd' in 'kobe bryant')
    print('dddd' not in 'kobe bryant')

      4.去掉字符串左右两边的字符strip 不管中间字符里的奇怪字符

  • a = '@@@@@kobe bryant$#@@#$$@#@$!%'
    print(a.strip('@ #$!%'))

      5. split切分

  • a = 'name;age;height;weight;nationality'
    print(a.split(';'))
    # 将字符串中以;分隔的字符以列表的形式输出 ['name', 'age', 'height', 'weight', 'nationality']

      6. 循环

  • n = 'kobe bryant'
    for item in  n:
        print(item)
    # 依次单个输出字符串的每一个字符
  • 内置方法

  • strip,lstrip,rstrip方法

  • print('@@@@@@@@kobe@@@@@@@@'.strip('@'))    # 去除字符串中含有@的字符        kobe
    print('@@@@@@@@kobe@@@@@@@@'.lstrip('@'))   # 去除字符串左边中含有@的字符    kobe@@@@@@@@
    print('@@@@@@@@kobe@@@@@@@@'.rstrip('@'))   # 去除字符串右边中含有@的字符    @@@@@@@@kobe
  • upper,lower方法

  • n = 'Kobe Bryant'
    ret = n.upper()     #将字符串中的英文字母一律小写 
    res = n.lower()     #将字符串中的英文字母一律大写
    print(ret)    
    print(res)
  • startswith,endswith方法

  • n = 'kobe bryant is a good basketall player'
    print(n.startswith('k'))    # 判断一个字符串的首字母是否为内置方法指定的首字母    输出 True
    print(n.startswith('d'))    # 输出 False
    print(n.endswith('r'))      # 判断一个字符串的最后一个字母是否为指定的首字母      输出True
  • format的三种用法

  • print('kobe is a {} player, his age is {}'.format('basketball','40'))       # 按顺序坐座位 先到先得
    print('kobe is a {0} player, his age is {1}'.format('basketball','40'))     # 按索引坐座位 有规可循
    print('kobe is a {sports} player, his age is {number}'.format(sports='basketball',number='40'))    # 按照标签内容坐座位
  • find,rfind,index方法

  • n = 'kobe bryant is a good basketall player'
    print(n.find('kobe'))   # 在字符串中查找是否含有'kobe'的字符 如果有则输出0即为True 如果没有则输出-1则为False
    print(n.rfind('kobe'))  # 从字符串的右边查找是否有'kobe'的字符
    print(n.find('kobe',0,2))   # 从字符串的0位到2位查找是否含有kobe的字符 如果没有则输出-1,反之则输出0
    print(n.index('o'))     # 从左到右依次查找字符串内指定字符'o'的索引,先找到的第一个'o'立即输出其索引,不管之后有多少个o
    print(n.index('ood'))   # 依次在指定字符串查找有'ood'字符(整体查找),找到后输出该字符的首字母索引
  • center,ljust,just,zfill方法

  • print('kobe'.center(50,'@'))    # 以kobe字符为中心,用@字符填充其两边,使得输出的字符串中字符的个数达到50个
    print('kobe'.rjust(50,"@"))     # 将kobe字符放在右边,用@字符填充左边,使整个字符串的字符个数达到0个
    print('222'.zfill(50))          # 在222字符的左边补充0,直至字符个数达到50个
  • expandtab方法

  • print('k	obe'.expandtabs(5))   # 用5个空格填充	
  • capitalize,swapcase,title方法

  • print('bryant'.capitalize())    # 字符串的首字母大写
    print('BrYaNt'.swapcase())      # 字符串的每一个字母大写的换成小写,小写的换成大写
    print('Kobe is a great player'.title())     # 每个单词的首字母大写
  • 列表类型

  • l1= list('kobe bryant')
    print(l1)       # 相当于for循环,将字符串中的字符依次放入列表
    dic2 = list({'sport':'basketball','age':'40','championship':'5'})
    print(dic2)     # list只能识别字典中的key值,因此只能将key值放入列表
  • 切片和索引取值方法

  • l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]]
    print(l1[2])    # 取出索引值为2的列表中的数据
    l1[0] = 'kobe'  # 对列表中索引值为0的数据进行替换 会改变原先list的内容
    print(l1)
    print(l1[0:4:2])    # 从列表索引值为0到4,步长为2进行取值,有头没尾
  • 长度和成员运算

  • l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]]
    print(len(l1))          # 输出列表的长度 即 元素的个数
    print('spddt' in l1)    # 判断想要查找的字符在不在列表里,输出布尔值
  • 追加和插入值

  • l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]]
    l1.append('FMVP')       # 在列表的最后加入值
    print(l1)
    l1.insert(0,'Italy')    # 在列表的索引值出加入字符
    print(l1)
  • 一次性插入多个值

  • l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]]
    l1.extend(['1',2,3])      # 在列表中插入多个值,看起来是列表但是插入的却是整数或者字符串
    print(l1)
  • 删除方法的几种方式

  • l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]]
    del(l1[2])      # 删除索引值所代表的的数据 由于列表是可变类型所以该方法会改变原先列表的
    print(l1)
    delete = l1.remove([1,2,3,4])   # 删除所指定的数据,并且返回的是None 而不是列表,同样列表的内容被删除后也一样放在原先的地址里
    print(l1,delete)
    res = l1.pop(-1)                # 弹出(即返回)索引值所代表的数据,并删除,同样列表的内容一样变化
    print(l1,res)
  • 循环

  • l1 = ['sport', 'age', 'championship',21234,[1,2,3,4]]
    for item in l1:
        print(item)
原文地址:https://www.cnblogs.com/ITchemist/p/11129183.html