zoukankan      html  css  js  c++  java
  • python数据类型一(重点是字符串的各种操作)

    一、python基本数据类型

      1,int,整数,主要用来进行数学运算

      2,bool,布尔类型,判断真假,True,False

      3,str,字符串,可以保存少量数据并进行相应的操作(未来使用频率最高的一种类型)

      4,list,列表,用来存储大量数据,用[]表示(里面可以存放各种数据类型)

      5,tuple,元组,不可以发生改变,用()表示

      6,dict,字典,保存键值对,{key : value}也可以保存大量数据

      7,set,集合,保存大量数据,不可以重复,其实就是不保存value的dict

    二、整数(int)

           在python3中所有的整数都是int类型,但在python2中如果数据量比较大,会使用long类型,在python3中不存在long类型。

           整数可以进行的操作:bit_length() 计算整数在内存中占用的二进制码的长度(很少用) 

           十进制5转化成二进制是101,长度是3,如下:

      a = 5  # 5的二进制是101 
      print(a.bit_length())   # 3

    三、bool类型,取值只有True和False,bool值没有操作

           转换问题:

      str => int      int(str)
      int => str      str(int)
     
      int => bool    bool(int)   0是False,非0是True
      bool => int    int(bool)   True是1,False是0
    
      str => bool    bool(str)   空字符串是False,非空字符串是True
      bool => str    str(bool)   把bool值转换成相应的"值",即字符串"True"或者"False"

           结论:所有的空都是False,所有的非空都是True;例如:0,None,空字符串,空列表,空字典,空集合,空元组。

                    要想把某数据转换成xxx数据类型,则 xxx(数据) 即可;

           补充:比较下面两个死循环

                  while 1:

                         print(“hello world!”)

                  和

                  while True:

                         print(“hello world!”)

      我们可以发现两者的区别是循环条件分别是1和True,我们通常用第一种。因为前者代码较后者更少,且计算机最底层认的是01,True需要转化成01,而1到了计算机底层也是1,所以前者比后者运行快那么一点点。

    四、字符串(str)

           把字符连成串,在python中用 ',",''',"""引起来的内容被称为字符串。

           切记:字符串是不可变的对象,所以任何操作对原字符串是不会有任何影响的,每次操作都返回新字符串

    4.1 索引和切片

           索引:索引就是下标,下标从0开始,使用[下标]可以获取到每一个字符,如下列代码示例:

      #     0123456 7 8
      s1 = "python最牛B"
      print(s1[0])  # 获取到p
      print(s1[1])  # 获取到y
      print(s1[2])  # 获取到t
      # print(s1[9])  # 没有9,越界了,会报 IndexError 的错误
      print(s1[-1]) # -1表示倒数第一个,即获取到B

      切片:我们可以使用下标来截取部分字符串的内容。

      语法:str[start:end]

      规则:顾头不顾尾,从start开始,截取到end位置,但不包括end,如下列代码示例:

      #     0123456 7 8
      s2 = "python最牛B"
      print(s2[0:3])  # 从下标为0获取到3,不包含3,结果为:pyt
      print(s2[6:9])  # 下标最大为8,但根据顾头不顾尾,想要取到最后一位必须给9,结果为:最牛B
      print(s2[6:10]) # 如果右边已经超过了最大值,则取到最后,结果为:最牛B
      print(s2[4:])   # 如果想获取到最后,那么end值可以不给,结果为:on最牛B
      print(s2[:-1])  # 从开始截取到最后,不包含最后一个,结果为:python最牛
      print(s2[:])    # 从头取到尾,结果为:python最牛B
      print(s2[-1:-5])# 取不到任何结果,因为默认应该从左往右截取
      print(s2[-5:-1])# 从倒数第5个字符开始向右截取到倒数第1个字符,结果为:on最牛

      通过上边知道切片默认是从左向右截取,我们可以给出第三个参数来控制方向,第三个参数叫步长,步长为负数时,则从右往左取值。

      语法:str[start:end:step]

           start : 起始位置

           end : 结束位置

           step : 步长(步长如果是整数,则从左往右取,如果是负数,则从右往左取,默认是1

      如下列代码示例:

      #     0123456 7 8
      s3 = "python最牛B"
      print(s3[1:5:2])   # 从下标为1的字符开始,取到下标为5(且不包含下标为5的值),每两个取1个,结果为yh
      print(s3[:5:2])    # 从开始取到下标为5的字符,每两个取1个,结果为:pto
      print(s3[4::2])    # 从下标为4的字符取到最后一个字符(包含最后一个字符),每两个取1个,结果为:o最B
      print(s3[-5::2])   # 从倒数第5个取到最后,每两个取1个,结果为:o最B
      print(s3[-1:-5])   # 取不到结果,因为默认是从左向右截取
      print(s3[-1:-5:-1])# 步长为负数,表示从右往左取值,结果为:B牛最n
      print(s3[-5::-3])  # 步长为-3,从倒数第5个开始,从右往前,取到最开始的字符(包含第一个),每3个取1个,结果为:oy
    4.2 字符串的相关操作方法

           s1.capitalize()      # 首字母大写,其他字母都变成小写

           s1.lower()            # 全部转换成小写

           s1.upper()            # 全部转换成大写,记住!!!

           s1.swapcase()     # 大小写互相转换

           s1.casefold()       # 转换成小写,和lower相比,casefold()对所有字母都有效,比如东欧的一些字母

           s1.title()              # 每个被非字母字符隔开的单词首字母大写

           s1.center()         # 居中,

        示例:s5 = “周杰伦”

                   ret = s5.center(10 , “*”)

           s1.expandtabs()   # 改变 的长度,更改为8

           s1.strip()              # 去掉字符串左右两端空格(还有换行符 ,缩进 ),也可以加参数去掉指定的元素,记住!!!

           s1.lstrip()             # 去掉字符串左边空格

           s1.rstrip()             # 去掉字符串右边空格

           s1.replace(“原字符”,“新字符”)  # 将原字符替换成新字符,也可以再加一个参数指定替换几个,记住!!!

           s1.split()              # 字符串按照指定字符切割(注意:如果切割符在左右两端,则切完一定出现空字符串),还可以跟第二个参数,表示根据第几个指定字符分割,记住!!!

      注意:split默认是按照空白切割!具体示例如下:

        a = "al    ex  ha  nishi shui"
        lst = a.split()
        print(lst)
        # 结果为:['al', 'ex', 'ha', 'nishi', 'shui']
    4.3 格式化输出
      s12 = "我叫%s,今年%s岁了,我喜欢%s" % ('sylar', 18, '周杰伦')  # 之前的写法
      s13 = "我叫{},今年{}岁了,我喜欢{}".format('周杰伦', 28, '周润发')  # 按位置格式化
      s14 = "我叫{0},今年{2}岁了,我喜欢{1}".format('周杰伦', '周润发', 28)  # 指定位置
      s15 = "我叫{name},今年{age}岁了,我喜欢{singer}".format(name='周杰伦', singer='周润发', age=28)  # 指定关键字
    4.4 查找

           s13.startswith()  # 是否以指定字符开头,记住!!!

           s13.endswith()   # 是否以指定字符结尾,记住!!!

           s13.count()        # 查找指定字符在字符串中出现的次数

           s13.find()          # 查找指定字符的索引,若没有所查找字符,则返回-1

           s13.index()       # 求指定字符索引,注意:若找不到,程序会报错

    4.5 条件判断

      s14.isalnum()      # 是否由字母和数字组成

      s14.isalpha()      # 是否由字母组成(包括汉字)

      s14.isdigit()        # 是否由数字组成,不包括小数点

      s14.isdecimal()  # 这个比较牛,中文数字也能识别

      s14.islower()      # 是否是小写字母

      s14.isupper()      # 是否是大写字母 

    4.6 计算字符串长度示例
      s18 = "我是你的眼,我也是a"
      print(len(s18))  # 10
    4.7 迭代

           我们可以使用for循环来遍历(获取)字符串中的每一个字符。

           语法:

        for 变量 in 可迭代对象 :

                         pass(也存在break和continue)  

        else:

                         当循环正常结束的时候会执行

           可迭代对象:可以一个一个往外取值的对象。

  • 相关阅读:
    牛客练习赛51 D题
    Educational Codeforces Round 72 (Rated for Div. 2) C题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) C题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) A题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) A题
    Educational Codeforces Round 72 (Rated for Div. 2) B题
    Educational Codeforces Round 72 (Rated for Div. 2) A题
    《DSP using MATLAB》Problem 7.2
    《DSP using MATLAB》Problem 7.1
    《DSP using MATLAB》Problem 6.24
  • 原文地址:https://www.cnblogs.com/li-li/p/9392944.html
Copyright © 2011-2022 走看看