Python初级入门:四、数据类型及各类型的操作方法(更新中)

    技术2022-07-10  187

    数据类型及各类型的操作方法

    各种数据类型的概念与特点数字类型整数类型浮点数类型复数类型数字的运算: 字符串类型字符串的格式与输出:字符串的格式化与相关操作位置索引切片 字符串操作符:简单操作符字符串的内方法:.format()函数其他字符串的内方法 元组类型列表类型文件类型字典类型集合类型 各种类型之间的关系类型之间的转化:

    各种数据类型的概念与特点

    类型指的是编程语言中文本的类型,不同的类型具有不同的格式,在程序运行中扮演不同的角色。

    数字类型

    数字类型包含整数类型、浮点数类型、复数类型。

    整数类型

    可以用二进制、八进制、十进制、十六进制表示。 -正常输入即为十进制;

    int(250) == 250

    -0b或者0B:2进制数;

    bin(250) == "0b11111010"

    -0o或者0O:8进制数;

    oct(250) == "0o372"

    -0x 或者0X:16进制数:

    hex(250) == "0xfa"

    浮点数类型

    即为带有小数点及小数的数字。 因为小数点的问题,浮点数计算比整数复杂,程序中尽量用整数。 浮点数用科学计数法记录,使用字母E或者e作为幂的符号,基数是10,例如:

    1e3 == 1000

    复数类型

    和数学中的复数概念一致。 复数z:

    z = 1 + 2j

    虚数部分用j或J表示,a与b都是浮点数类型。 可以使用z.real()获得z的实数部分,z.imag()获得虚数部分。

    数字的运算:

    x + y # x与y相加 x - y # x减去y x * y # x乘以y x / y # x除以y x % y # x除以y取结果的余数 x // y # x除以y取结果的整数部分; +x # 正x -x # 负x x ** y # x的y次幂

    特别的,通过函数对数字进行运算

    pow(x , y) # 计算x的y次方 abs(x) # 求x的绝对值 divmod(x , y) # 得到 x//y 与x%y

    字符串类型

    字符串的格式与输出:

    print("字符串str") print("\"输出引号\"") print("\\输出反斜杠") print("换行\n") print(r"输出原始字符串,也就是不被转义的字符串\n,这里的\n会被当做文本输出而不会换行") print(""" 长文本换行 比如我想写一首诗 需要换很多行 用三个引号就可以完成这个操作 """)

    反斜杠叫做转义字符,可以改变特定字符的含义,比如可以 \"将本来用来控制字符串的引号变成文本状态的引号。 输出原始字符串r"输出字符串"。

    字符串的格式化与相关操作

    字符串是字符的有序序列,可以对其中的字符进行索引。

    位置

    字符串"abcd"中a为第0个字符(字符串从0开始)也是第-4个字符(反向数)。

    索引

    使用格式为"字符串"[位置]可以对字符串中的内容进行索引,返回到字符串中某个位置的单个字符,字符串中任何文本内容都占用位置,哪怕是空格(转义符与被转移的字符共同占用一个位置)。

    "a" == "abcde"[0] "f" == "abcde"[-1] "c" == "abcdef"[2] "c" == "abcde"[-3] " " == "Hello\nWorld !"[-2] "\n" == "Hello\nWorld !"[5]

    切片

    使用格式为"字符串"[位置1:位置2:截取间隔]可以对字符串中的内容进行索引,截取间隔默认为0,为0时返回到字符串:<位置1> 至 <位置2> - 1 中的所有字符。

    字符串操作符:

    简单操作符

    "字符串拼接" == "字符串" + "拼接" # 字符串拼接 "!!!" == "!" * 3 # 字符串重复3次

    以上两种方法虽然编写简单但是计算机运行效率低,建议使用.join或.format

    字符串的内方法:

    方法特指a.b()风格函数中的b()

    .format()函数

    字符串.format()函数用于格式化输出 具体使用方法如下

    "你{}好{}鸭{}".format("~","#","!") '你~好#鸭!' # 上一行代码返回的结果为此

    代码中{}是槽,用来圈定一个位置,将.format中规定值填充到槽中,槽中可以填入操作符,控制填入内容的格式或指定填入内容。

    填充: <参数序号>:<填充><对齐方式><宽度>一个表示()中内容位置的数字,可以指定填充内容的位置引导符号,符号以后的内容为格式控制符用于填充的字符(只能为单个字符)控制对齐方式:左对齐<,右对齐>,居中对齐^控制槽的宽度

    其中槽中可以不填,不填则为默认值,填充符号默认为空格,对齐方式默认为左侧对齐,输出宽度默认为字符串宽度。 详例:

    "位{0:!^20}置{2:>15}控{0:=<}制{1:->15}".format("阿呆","Ad","Python") '位!!!!!!!!!阿呆!!!!!!!!!置 Python控阿呆制-------------Ad' # 这是输出结果 输出内容格式控制 <参数序号>:<,><.><类型>一个表示()中内容位置的数字,可以指定填充内容的位置引导符号,符号以后的内容为格式控制符数字千位分割符控制浮点数精度或者字符串最大的输出长度指定类型b,c,d,o,x,X,e,E,f,% 单行动态刷新 详解见函数章。 for i in range(101): print("\r{:1}%".format(i),end="") # IDEA似乎不能实现这种操作,编写好的程序用CMD打开是可以正确运行的

    print()函数输出结果后默认添加一个换行,通过end=""可以控制最后的内容是什么,比如空值,也就是不进行额外操作 \r 可以控制下一次输出时光标的位置(也就是指下一次开始打印内容的位置) 例如:

    import time for i in range(101): time.sleep(0.1) print("你!!!\r{:1}%好".format(i),end="")

    会看到,打印第一次时,似乎是从“!”开始打印的,然而实际上是打印瞬间%将"你"覆盖住了。

    其他字符串的内方法
    "hello".upper() == "HELLO" # 将字符串的所有字母变为大写 "HELLO".lower() == "hello" # 将字符串的所有字母变为小写 "hello".capitalize() == "Hello" # 将字符串的首字母大写 "==Hello World==".strip("=") == "Hello Woeld" # 去掉两边空格或者指定字符,括号内为空则默认为清除空格 "H e l l o".split() == ['H', 'e', 'l', 'l', 'o'] # 按指定字符分割字符串为列表,不指定参数则默认以空格为分割点 "1".isdigit() # 判断字符串引号内是否是数字类型 "!".join("hello") == 'h!e!l!l!o' # 在括号内的字符串每个字符(最后一个以外)后加入一个括号内内容 "helloworld".find("l") == 2 # 从左向右查找字符串中的某个字符第一次出现的位置 "h e l l o w o r l d".replace(" ","!",5) == 'h!e!l!l!o w o r l d' # 将字符串中指定字符替换成另一个字符,如果替换次数指定,则替换不超过替换次数次 "hello world".center(20,"=") == '====hello world=====' # 将字符串根据指定宽度居中,并按是指填补内容填补空隙(默认为空格)。

    元组类型

    t1 = 1, 2, 3 ,4 t2 = 1, "元素2", "元素3" t3 = 1, 2, (1, 2, 3, "11")

    元组是包含多个元素的类型,元素之间用逗号分割。 元组中元素可以是不同类型。 一个元组可以是另一个元组的元素(需给元组加括号): 元组中各元素存在先后关系,可以通过索引访问元组中元素,索引方式与字符串类似。 元组定义后不能更改不能删除,如需更改使用列表类型 元组可以通过索引区间访问元组中部分元素t[num1:num2] 与字符串类似,元组之间可以使用 + 或 * 进行运算

    列表类型

    列表是至有序的元素集合,其所包含的元素可以多样 列表可以通过索引访问其中的单个元素 列表的大小没有限制可以随时更改 序列操作符

    [1,2,3] + [2,3,4] [1, 2, 3, 2, 3, 4] # 上述代码输出结果 [1,2] * 3 [1, 2, 1, 2, 1, 2] # 上述代码输出结果 [1,2,3][1] # 索引,与字符串索引类似 2 # 上述代码输出结果 len([1,2,3,4,5,6]) # 得到序列中元素个数 6 # 上述代码输出结果 [1,2,3,4][0:2] # 获取列表中的一个子序列,与字符串分割类似 [1, 2] # 上述代码输出结果 for i in [1,2,3,4,5,6]: # 对列表进行循环列举 <expr> in <seq> 成员检查,检查<expr>是否

    在列表中 .append(x) 将元素x添加到列表最后 .sort() 将列表元素排序 .reverse() 将列表元素翻转 .index() 返回第一次出现元素x的索引值 .insert(i, x) 在i位置插入新元素x .count(x) 返回元素x在列表中的数量 .remove(x) 删除列表中第一次出现的元素x .pop(i) 去除列表中位置i的元素并删除(浮选法)

    文件类型

    暂略

    字典类型

    字典是无序的对象集合。 两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

    >>> a = {0, 1, 2 ,3} >>> b= {0, 2 ,1 , 3} >>> a == b

    集合类型

    集合类型与数学中的集合概念一致集合元素之间无序,每个元素唯一,不存在相同元素集合元素不可更改,不能是可变数据类型集合用大括号 {} 表示,元素间用逗号分隔建立集合类型用 {} 或 set()建立空集合类型,必须使用set() 操作符或操作函数描述S 丨 T并,返回一个新集合,包括在集合S和T中的所有元素S - T差,返回一个新集合,包括在集合S但不在T中的元素S & T交,返回一个新集合,包括同时在集合S和T中的元素S ^ T补,返回一个新集合,包括集合S和T中的非相同元素S <= T 或 S < T返回True/False,判断S和T的子集关系S >= T 或 S > T返回True/False,判断S和T的包含关系S 丨= T并,更新集合S,包括在集合S和T中的所有元素S -= T差,更新集合S,包括在集合S但不在T中的元素S &= T交,更新集合S,包括同时在集合S和T中的元素S ^= T补,更新集合S,包括集合S和T中的非相同元素S.add(x)如果x不在集合S中,将x增加到SS.discard(x)移除S中元素x,如果x不在集合S中,不报错S.remove(x)移除S中元素x,如果x不在集合S中,产生KeyError异常S.clear()移除S中所有元素S.pop()随机返回S的一个元素,更新S,若S为空产生KeyError异常S.copy()返回集合S的一个副本len(S)返回集合S的元素个数x in S判断S中元素x,x在集合S中,返回True,否则返回Falseset(x)将其他类型变量x转变为集合类型 集合常用于包含关系的比较与数据去重

    各种类型之间的关系

    类型之间的转化:

    int() # 转为整数 float() # 转为浮点数 complex() #转为复数 type() # 获得括号内的文本类型 str() # 将x变为字符串形式 ord() # 将Unicode编码变为单字符 chr() # 将单字符变为Unicode编码
    Processed: 0.010, SQL: 9