数据类型及内置方法
1、数字类型
1、整型 int
用途:用于存取整数,手机号,QQ号等
定义方式:age = 18 或者 age = int(18)
常用方法:数学计算
其他进制转十进制:
二进制转10进制:110 = 1 * (2 ** 2) + 1 * (2 ** 1) + 0 * (2 ** 0) = 6
print(int('110',2)) # >>>6
八进制转10进制:123 =1 * (8 ** 2) + 2 * (8 ** 1) + 3 * (8 ** 0) = 64 + 16 + 3 = 83
print(int("123",8)) # >>>83
16进制转10进制:321= 3 * (16 ** 2) + 2 * (16 ** 1) + 1 * (16 ** 0) = 768 + 32 + 1 = 801
print(int("321",16)) # >>>801
十进制转其他进制:
bin(6)# >>>0b 110
oct(83)# >>>0o 123
hex(801)# >>>0x 321
有索引的类型都是有序的
可变类型:值变,id不变
不可变类型:值变,id不变
整型int是无序的,不可变类型
只能存一个值
2、浮点型 float
用途:用于存小数,如身高,体重等
定义方式:height = 1.81 或 height = float(1.81)
常用方法:数学计算
浮点型字符串转整型,必须先转换成浮点型才能转换成整型,并且是直接去除小数部分
s1 = '1.9' print(type(s1)) f1 = float(s1) print(f1) print(type(f1)) a1 = int(f1) print(a1) print(type(a1))
浮点型是无序的,不可变的,只能存一个值
2、字符串类型
用途:存描述性信息的数据,如个人简介,姓名等
定义方式:
- 单引号 ' '
- 双引号 "" ""
- 三引号 ''' ''' 或者""" """
三种方式没有区别,但是同一级引号不能混用,字符串内套字符串,需用不同引号
字符串前面加个小写的r,表示转义,将字符串内有特殊意义的字符,全部转成普通字符串
用引号引起的部分,全部转成字符串
print("不换行\r","打印")# >>>打印 print(r"不换行\r")# >>>不换行\r
内置方法
- 索引取值(正向从0开始,反向从-1开始),只能取,不能存
s1 = "15,4'shen',[2]" print(s1[2])# 正向取>>>, print(s1[-3])# 反向取>>>[
- 索引切片 :截取字符串中的一小段字符,(顾头不顾尾)第三个为步长
s1 = "hello,world" print(s1[0:5]) print(s1[:5])# 取前5个数 print(s1[::-1])# 反向取 print(s1[-5:])# 取后五个数 print(s1[0:7:2])# 以步长为2取
- 成员运算:in 和 not in 返回的是布尔值
s1 = "hello,world" print("o"in s1)# >>>True print("e" not in s1)# >>>False
- .strip():去除字符串左右两边指定的字符
s1 = input(">>>").strip()# 去除字符串两边的空格 s2 = input(">>>").strip("*")# 去除输入两边的* s3 = "***shen****" print(s3.strip("*"))# 去除两边的*
- len():获取字符串中字符的个数,列表中,值的个数,字典中键值对个数
s1 = "hello world" print(len(s1))# >>>11(空格也算)
- .split():切分:对字符串按照指定的分隔符进行从左往右切分,可以指定切分次数,返回的是一个列表
s1 = "python hello world" print(s1.split()) s1 = "python|hello|world" print(s1.split("|")) print(s1.split("|",1))# 指定切分次数,从左往右切 s1 = "python\hello\world" print(s1.split("\\"))# 需两个\\前面一个为转义\特殊意义的,python中\\代表自身\
- for 变量 in 可迭代对象:循环取值:字符串、列表、字典中能索引取值的
s1 = "hello world" for i in s1: print(i)
- .rstrip()/lstrip():去除字符串右边/左边的指定字符
s3 = "***shen****" print(s3.strip("*")) print(s3.rstrip("*")) print(s3.lstrip("*"))
- .lower()/.upper():转换大小写
s1 = "Hello WorlD" print(s1.lower())# 全部字母转成小写 print(s1.upper())# 全部字母转成大写
- .starswith()/.endswith():判断是否以。。字符开头或者以。。字符结尾,返回的是布尔值
s1 = "hello world" print(s1.startswith("h")) print(s1.endswith("ld"))
- 字符串格式化,%s,%d,.format(),f-string
- %s和%d
%s可以接收任意字符,%d只能接收数字类型并且输出转换成整型
name = input("输入名字:") age = input("输入年龄:") #age = int(age)#%d只能接收数字类型,故需要转换成数字类型 age = eval(age)#%d只能接收数字类型,故需要转换成数字类型 print("my name is %s" % name) print("my name is %s , my age is %d" % (name, age)) print("my name is %s , my age is %s" % (name, age))
- .format()
三种玩法
- “{}{}”.format(xxx,yyy)#按照顺序往花括号里放值
- "{1}".format(xxx,yyy,zzz)#按照索引往花括号里放值
- "{name}".format(name=xxx)#指定放值
name = "shen" age = 18 hobby = "study" #按顺序往{}里放值 print("我的名字是{}我的年龄{}".format(name, age, hobby)) #按索引放值 print("我的名字是{0}我的年龄{2}".format(name, hobby, age)) #按指定放值 print("我的名字是{mz}我的年龄{nn}".format(mz=name, nn=age))
- f-string (python3.6版本之后才有的功能)
f"{xxx}"
name = "shen" age = 18 habby = "study" print(f"我的名字是{name},我的年龄是:{age}我的爱好是{hobby}")
- .rslipt():切分,从右往左切,可以指定切分次数,返回列表
s1 = "python|hello|world" print(s1.split("|",1)) print(s1.rsplit("|")) print(s1.rsplit("|",1))
- .join():按照分隔符将加入纯字符串组成的可迭代对象中元素拼成字符串
s1 = ["1","8","shen"] print("*".join(s1))# 将*加入到纯字符串列表中拼接成字符串 s1 = {"name":"shen","age":18} print("$".join(s1))# 列表拼接的是key关键字
- .replace():将字符串中字符按照旧值,新值进行替换
s1 = "hello world" print(s1.replace("hello", "hi"))# >>>hi world
- .isdigit():判断当前字符串中的数据,是否为存数字(整数),返回是布尔值
s1 ="123" s2 = "123,321" print(s1.isdigit())# >>>True print(s2.isdigit())# >>>False
可以索引取值,有序,值变id变所以是不可变类型,只能存一个值
3、列表类型 list
用途:用于存一个或者多个不同类型的值
定义方式:通过中括号[],存值,值之间用逗号分隔
常用方法:
- 索引取值,正向取和反向取,可以取也可以存
l1 = [1, 2, 3, "shen"] print(l1[2]) print(l1[-1]) l1[3] = 8# >>>将l1索引3位置的值换成8
- 索引切片
跟字符串索引切片相同,顾头不顾尾,默认步长为1
- .append():在列表最后追加一个值,传入什么类型加入什么类型,一次性只能加一个值
l1 = [1, 2, 3, "shen"] l1.append(100) print(l1)# >>>[1, 2, 3, 'shen', 100] l1.append("age") print(l1)# >>>[1, 2, 3, 'shen', 100, 'age'] l1.append([1,2]) print(l1)# >>>[1, 2, 3, 'shen', 100, 'age', [1, 2]]
- .insert():在任意位置插入一个值
l1 = [1, 2, 3, "shen"] l1.insert(3,"name")# 将"name"插入索引的位置 print(l1)# >>>[1, 2, 3, 'name', 'shen']
- .extend():将传入的可迭代对象打散后追加到列表后面
l1 = [1, 2, 3, "shen"] l1.extend([1,2,3]) print(l1) l1.extend({"name":"shen","age":18}) print(l1)
- .remove():删除指定值,仅删除第一个,没有返回值
l1 = [1, 2, 3, "shen",1] l1.remove("shen") print(l1)# >>>[1, 2, 3, 1] l1.remove(1) print(l1)# >>>[2, 3, 1]
- .pop():按照索引删除,如果不指定索引默认删除最后一个,有返回值
l1 = [1, 2, 3, "shen", 1] v1 = l1.pop()# 返回值是删除的那个值 print(l1)# >>>[1,2,3,"shen"] print(v1)# >>>1 v2 = l1.pop(2)# 拿出删除的那个值 print(l1)# >>>[1,2,"shen"] print(v2)# >>>3