python基础-基本数据类型(二)

一、序列类型

  序列类型是用来表示有序的元素集合

1、字符串(str)

  python中字符串通常用str表示,字符串是使用单引号,双引号,三引号包裹起来的字符的序列,用来表示文本信息。 

1.1 字符串的定义

  a = '123'
  b = "123"
  c = '''123'''
  print(type(a),type(b),type(c))

  <class 'str'> <class 'str'> <class 'str'> 
  


  使用单引号或者双引号表示字符串时没有任何区别,当要表示字符串的单引号时用双引号表示,反之亦然。 
  print('我是"双引号"')
  print("我是'单引号'")     

  单引号,双引号只能创建单行的字符串,想要创建多行数据时需要使用三引号,三引号通常用来表示多行注释等。
  定义空字符串
  a = ""  print(a)

1.2 字符串的索引

  任何序列类型中的元素都是使用索引来表示它的位置。

  字符串是字符的序列表示,单个字符在字符串中的位置也是使用索引来表示,也叫下标。

  可以通过索引来获取字符串中的单个字符,索引用整数表示,从0开始

  s = 'hellow,world!'

  print(s[1],s[3])

  输出结果:e,l

1.3字符串的切片

  获取序列中的子列叫做切片,语法如下:

  str[start:end:step]

  start表示开始索引,end表示结束索引,step代表步长,从字符串索引为start到end之间不包含end,每个step步长取一个值,当step为1时可以省略,step为负数时反向取值

  s = '12345678'

  print(s[1:5:2])

  输出:2,4 #包头不包尾,步长为2

  print(s[:5])

  输出:12345 #从头开始切不需要start

  print(s[2:])

 

  输出:345678 #切到末尾不需要end

  print(s[2::-2])

  输出:31 #步长为负数,反向

1.4 字符串的拼接

  python中可以通过+好拼接两个字符串

  s1 = "123"

  s2 = "456"

  print(s1+s2)  输出:123456

  字符串和整数进行乘法运算表示重复拼接这个字符串

  print(s1*2) 输出:123123

1.5 字符串常用方法

  通过内建函数dir可以查看所有Python内建函数

  print(dir(str))

  输出:['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

  官方文档:https://docs.python.org/3/library/stdtypes.html?utm_source=testingpai.com#string-methods

1.6 字符串和数值的相互转化

  字符串和数值之间可以相互转换

  字符串转换成整数:int('1') 输出:1

  整数转换字符串:str(1) 输出:'1'

  字符串转换成浮点数:float('1.1') 输出:1.1

  浮点数转换成字符串:str(1.1) 输出:‘1.1’

1.7 转义符

  常用的转义字符:

(在行尾时)续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\n 换行
\t 横向制表符
\r 回车
\f 换页

 

1.8 字符串格式化

  python支持两种字符串格式化的方式:

  1、%字符串格式化

  语法规则如下:

  %[(name)][flags][width][.precision]typecode
  1. (name) 可选,用于选择指定的 key
  2. flags 可选,可供选择的值有,注意只有在和数值类型的 typecode 配合才起作用width,可选字符串输出宽度width 可选输出字符串长度
    1. +, 右对齐,正数前加正号,负数前加负号
    2. -, 左对齐,正数前无符号,负数前加负号
    3. 空格, 右对齐,正数前加空格,负数前加负号
    4. 0, 右对齐,正数前无符号,复数前加负号;用 0 填充空白处
  3. .precision 可选,小数点后保留位数,注意只有在和数值类型的 typecode 配合才起作用
  4. typecode 必选
    1. s,获取传入对象的字符串形式,并将其格式化到指定位置
    2. r,获取传入对象的 __repr__ 方法的返回值,并将其格式化到指定位置
    3. c,整数:将数字转换成其 unicode 对应的值,10 进制范围为 0 <= i <= 1114111(py27 则只支持 0-255);字符:将字符添加到指定位置
    4. o,将整数转换成 八 进制表示,并将其格式化到指定位置
    5. x,将整数转换成十六进制表示,并将其格式化到指定位置
    6. d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
    7. e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写 e)
    8. E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写 E)
    9. f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后 6 位)
    10. F,同上
    11. g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过 6 位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是 e;)`
    12. G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过 6 位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是 E;)`
    13. %,当字符串中存在格式化标志时,需要用 %% 表示一个百分号

   例子:

    res = '%s学校的升学率为%s%%'%('某某',80)

    print(res)

    某某学校的升学率为80%

  

    res = '%(school)s学校的升学率为%(percent)s%%'%('school':'某某','percent':80)

    print(res)

    某某学校的升学率为80%

    注:%后是字典时,可以通过name指定key的值

 

    res = '%(school)s学校的升学率为%(percent).2f%%'%('school':'某某','percent':80.888)

    print(res)

    某某学校的升学率为80.89%

    注:保留两位小数

 

    2、format字符串格式化

    %字符串格式化继承C语言,Python中给字符串对象提供了一个format函数来进行字符串格式化

    基本语法:<模板字符串>.format(<逗号分隔的参数>)

    在模板字符串中使用{}代替%做为槽位

 

    例:

    res = '{}学校的升学率为{}%'.format('某某',80)

    print(res)

    某某学校的升学率为80%

 

    当format中的参数使用位置参数时,{}中可以填写参数的整数索引让其一一对应

    res = '{0}学校的升学率为{1}%'.format('某某',80)

    print(res)

    某某学校的升学率为80%

 

    当format中的参数使用关键字参数时,{}中可以填写参数的关键字来表示

    res = '{school}学校的升学率为{percent}%.format(school='某某',percent=80)

    print(res)

    某某学校的升学率为80%

 

    {}除了可以写参数索引外,还可以填写控制信息来实现更多的格式化。语法如下:

    {<参数序号>:<格式控制标记>}

    其中格式控制标记格式如下

    [fill][align][sign][#][0][width][,][.precision][type]

    

fill 【可选】空白处填充的字符

  2. align 【可选】对齐方式(需配合 width 使用)

    2.1 <,内容左对齐

    2.2 >,内容右对齐(默认)

    2.3 =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号 + 填充物 + 数字

    2.4 ^,内容居中

  3.sign 【可选】有无符号数字

    3.1 +,正号加正,负号加负;

    3.2 -,正号不变,负号加负;

    3.3 空格 ,正号空格,负号加负;

 

  4.#【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

  5.‘,’ 【可选】为数字添加分隔符,如:1,000,000

  6.width 【可选】格式化位所占宽度

  7..precision 【可选】小数位保留精度

  8.type 【可选】格式化类型

    1. 传入” 字符串类型 “的参数
      1. s,格式化字符串类型数据
      2. 空白,未指定类型,则默认是 None,同 s
    2. 传入“ 整数类型 ”的参数
      1. b,将 10 进制整数自动转换成 2 进制表示然后格式化
      2. c,将 10 进制整数自动转换为其对应的 unicode 字符
      3. d,十进制整数
      4. o,将 10 进制整数自动转换成 8 进制表示然后格式化;
      5. x,将 10 进制整数自动转换成 16 进制表示然后格式化(小写 x)
      6. X,将 10 进制整数自动转换成 16 进制表示然后格式化(大写 X)
    3. 传入“ 浮点型或小数类型 ”的参数
      1. e, 转换为科学计数法(小写 e)表示,然后格式化;
      2. E, 转换为科学计数法(大写 E)表示,然后格式化;
      3. f , 转换为浮点型(默认小数点后保留 6 位)表示,然后格式化;
      4. F, 转换为浮点型(默认小数点后保留 6 位)表示,然后格式化;
      5. g, 自动在 e 和 f 中切换
      6. G, 自动在 E 和 F 中切换
      7. %,显示百分比(默认显示小数点后 6 位)
    res = '{school}学校的升学率为{percent:.2%}'.format(school='moumou',percent=0.80888)
    print(res)

    某某学校的升学率为80.89%

    注:保留两位小数

    3.格式字符串字面值

     格式字符串字面值或称为 f-string 是标注了 f或者F前缀的字符串字面值,这种字符串包含可替换的字段即以{}标注的表达式    

     基本语法是:

      literal_char{expression[:format_spec]}

    • literal_char 普通字符
    • expression 表达式,变量或函数。。
    • format_spec 格式字符串,规则同上面的 format 字符串

     直接在f字符串的{}内写上变量名,系统会自动将变量的值以字符串的形式替换

      school ="某某"
      percent = 80
      res = f'{school}学校的升学率为{percent}'
      print(res)
      某某学校的升学率为80

    带格式的f字符串
    输出两位数月份:
    month = 8
    res = f'{month:>02}'
    print(res)
    08

2、列表
  
python中列表用于表示任意元素的序列,列表中可以是任意的数据类型,列表中的元素可以增删改。

2.1 列表的定义
 
 列表由一对中括号进行定义,元素与元素之间用逗号隔开。

2.2 列表的拼接
 
 列表可以使用加法运算进行拼接,也可乘整数进行列表的重复
  a = [1,2,3]
  b = [4,5,6]
  print(a+b)
  [1,2,3,4,5,6]

  a = [1,2]
  print(a*2)
  [1,2,1,2]

2.3 列表的索引和切片
 
 与序列切片操作一致
2.4 列表的常用操作        
  2.4.1 修改元素
        
  列表中修改元素,只需要给索引赋值即可  
  a = [1,2,3]
  a[2] = 4
  print(a)
  [1,2,4]

  2.4.2 增加元素
  
增加元素需要使用列表的方法
  .append(el) 在列表的末尾加一个元素
  a=[1,2,3]
  a.append(4)
  print(a)
  [1,2,3,4]

  .insert(index,el)在列表指定的索引处添加元素
  a.insert(1,2)
  print(a)
  [1,2,2,3]

  .extend(iterable)扩展列表,传入的对象为可迭代对象中的元素
  a.extend([1,2,3])
  print(a)
  [1,2,3,1,2,3]
  
  2.4.3 删除元素  
  .pop(index) 删除指定索引处的元素,并返回该元素,未指定则默认删除最后一个元素
  a = [1,2,3]
  a.pop()
  print(a)
  [1,2]
  
  .remove(value)从列表删除第一个指定的值value,如果不存在value则报错
  a = [1,2,1,3]
  a.remove(1)
  print(a)
  [2,1,3]

  .clear(),清空列表,使列表变成空列表
  a = [1,2,3]
  a.clear()
  print(a)
  []

2.5 列表的其他方法
  .copy(),返回一个列表的浅拷贝。
  .count(value),统计一个列表中元素的数量
  .index(value),返回列表中指定value值得第一个索引,不存在则报错
  .reverse(),翻转列表元素顺序
  .sort(key=none,reverse=False),对列表进行排序,默认按照从小到大的顺序,当reverse的值为True时,从大到小,排序时列表中元素需类型相同,否则报错。 

2.6 字符串和列表的转换 
  字符串是字符组成的序列,可以使用list函数将字符串转换成单个的字符的列表
  a = 'hello world'
  ls = list(a)
  print(ls)  ['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']

3、元祖    

  元祖(tuple)表示任意元素的序列,元素可以是任意数据类型,但是不可以增删改,元祖是不可变列表

3.1 元祖的定义
  元祖是用一对小括号进行定义,元祖之间用逗号隔开。

3.2 元祖的索引与切片  
  与列表一致

3.3 元祖的常用操作
 
 元祖的元素不能增加,删除和修改,其他操作和列表一致。

  元祖利用不可修改的特性,常用在多变量赋值和函数多返回值上。

3.4 元祖的常用方法
  
  元组只有两个公有方法 count,index 用法与列表相同


3.5 len函数
 
 内建函数len可以获取元祖中的元素个数


4、可变与不可变对象
  
python中的对象根据底层内存机制分为可变与不可变两种

  可变对象可以在其id()保持不变的情况下改变其取值
  基本数据类型中列表,集合,字典都是可变类型
  如果修改了一个对象的值,必须创建新的对象,那这种数据类型就是不可变类型。
  基本数据类型中数字,字符串,元祖都是不可变类型。

5、可哈希对象
  

  一个对象的哈希值如果在其生命周期内绝不改变,就被称为可哈希。可哈希对象都可以通过内置函数 hash 进行求值。

  它们在需要常量哈希值的地方起着重要的作用,例如作为集合中的元素,字典中的键。

  不可变数据类型都是可哈希对象,可变数据类型都是不可哈希对象。

 

 

  
posted @ 2021-05-27 15:42  无名。。。  阅读(274)  评论(0编辑  收藏  举报