一、基本数据类型:
1.整型(int)
本质:就是整数 int()
内置方法:没有内置函数,就只是用于计算。
数据类型转换: int(待转的数据)
1.int 可以将纯整数的字符串转换成整型,且输出的类型都是 int类型。
2.如果字符串里有字母,或者小数点,特殊符号,则都不能转,会报错。
3.整型会直接将布尔值 True/False 直接转换成 1/0
进制数转换:
1.进制数有4种。
二进制、八进制、十进制、十六进制
2.十进制转其他进制
bin(十进制数据) => 二进制,bin 为二进制标识
oct(十进制数据) => 八进制,oct 为八进制标识
hex(十进制数据) => 十六进制,hex 为十六进制标识
如果没有任何标识,则默认都是十进制。
3.其他进制转十进制
直接用int(其他进制数据) => 十进制数
或者 直接用int(其他进制数据,n) => 十进制数(n为2,8,16)人为指定进制数。
2.浮点型(float)
本质:小数 float()
内置方法:没有内置函数,就只是用于计算。
数据类型转换
1.整型转换成浮点型,只需要后面添加小数点和0
2.有字母不能转换成浮点型,不然报错。
3.只能识别一个小数点,但不能识别多个小数点。不然会报错。
4.布尔值转换成浮点型会有 True/ False 转换成 1.0/0.0
3.字符串/字符型(str)
1.本质:由数字、字母、下划线组成的一串字符。
有单引号/双引号/三引号构成。注意二三引号也可以用于注释,但左右没有赋值符号或者变量时就是注释,不然就是字符串。
2.数据类型转换
兼容所有数据类型的转换。
3.内置方法
3.1按索引取值
正向取: s1[n] (n为阿拉伯数字,1)
反向取: s1[m] (m为阿拉伯数字负数形式,-1为最右边的第一个数值)
索引取值只能取值,不能绑定为其他数据值。
3.2切片
取出多个字符,切片数据默认都是从左到右的。
正向切片(顾头不顾尾,前包含后不包含)
反向切片(为负数,则从最右边第一个数-1开始取)
3.3间隔/方向
s1[x,y,z] (x,y,z 均为阿拉伯数字,也可以为负数)
当z = 2 时是代表步长为2,就是每取一个字符就中间隔一字符再取,默认1可以不用写。
取出全部字符: s1[:]
3.4统计字符串中字符的个数 len
3.5移除字符串首尾两边的字符,中间字符不行。 strip
注意:字符串里面一个空格也算一个字符
字符调用内置方法,不是改变原来数据,二三产生新的数据值。
3.6按照指定的字符切割字符串,将指定的字符切除。 split
3.7字符串大小写转换 lower/upper
将字符串里的所有字母转换成小写或者大写。
3.8字符串的格式化输出 {} format
方式一:等价于占位符%s====这里用{}来代替占位符,然后xxx.format('要替换的字符','要替换的字符','要替换的字符'....)
方式二:索引取值,支持重复使用。
res2 = 'my name is {0} my age is {1} {0} {1} {1} {1}'
print(res2.format('xz', 18))
#my name is xz my age is 18 xz 18 18 18
方式三:按K取值(关键字取值),支持重复使用。
res3 = '{name} {name} {age} my name is {name} my age is {age}'
print(res3.format(name='xz', age=18))
#xz xz 18 my name is xz my age is 18
方式四:'f'
先定义变量,简写f后面用变量名表示。
name = 'xz'
age = 18
print(f'my name is {name} my age is {age} {name} {age}')
#my name is xz my age is 18 xz 18
3.9统计字符串中指定的字符出现的次数 count
3.10判断字符串的开头或者结尾是不是指定的字符。
判断开头:s1.startswith('xxx')
判断结尾:s2.endswith('xxx')
3.11字符串的替换 replace
res.replace('xz', 'wyb', 1),从左往右替换指定个数1
3.12字符串的拼接 join
注意:列表数据中必须是字符串类型,不然会报错。
3.13判断字符串中是否全为纯数字 isdigit
如果全为纯数字则返回值为 True
如果不是纯数字则返回为 False
3.14查找某个字符对应的索引值 index
index 查找索引,如果没有元素,报错
find 查找索引,如果没有,则会返回为-1,False
3.15正文
如果字符串是标题化的,则见(title())则返回为True,不然返回为False。
print(res.capitalize()) 内容第一个字母为大写
# My name is xz
4.列表(list)
1.本质:list[1,2,3]。能存储多个数据且方便获取整体或局部数据。用中括号包含多个数据,且数据间用逗号间隔,数据值可以为任意的数据类型。
2.索引取值,数字的起始位置从0开始数,生活是从1开始数。
3.遇到复杂结构的构造结构,我们要先学会先拆后找到具体数据的位置。
4.数据类型转换:
列表只能转换字典和字符串,不能转换整型和浮点型。
所以能够被for循环的数据类型都可以转换成列表。
取值:
4.1.索引取值:[0]为列表的第一个数。参数为正数,则正向从左往右开始取值。为负数,则从右往左数第一个数为-1。
4.2.切片操作:[:] 冒号左边为从左开始取值的位置,冒号右边是从左往右最后一个位置,且遵循左包含右不包含。负数代表从右往左取值。
4.3.间隔
[::m]两个冒号后面的参数代表每隔 m-1 一个数取一个值。
4.4.统计列表中数据值的个数。
len(),统计列表中有多少个数据值。
5.内置函数
5.1.count():用来统计指定的成员在列表中出现的个数。
5.2.index()返回该元素的索引值。
注意:返回该元素的索引值是该元素在列表中第一次出现的位置。我们也能查询成员在特定位置范围内出现的索引值,eg:index(menber,m,n),表示menber在第m-1到n-1的位置。
5.3.reverse():该列表元素前后颠倒。
5.4.sort():将元素从小到大排序,如果想从大到小则可以与reverse()搭配使用。eg:list.sort(reverse = True)
5.5.append():向列表中添加一个成员。
list.append(2)
list.append('8')
注意:1.一次只能添加一个成员,并且只能添加在列表末尾。2.可以添加字符串类型。
5.6.exend():方法向列表中添加成员,并且是参数,可以为列表扩展列表。
意思是exend后面是列表时,就会多加的列表里的成员到要添加的列表的后面
如果exend后面跟字符串,则就会一个个字符拆开后依次再加入到列表后面。
如果想让字符串完整的加入列表,则需要用列表的形式来添加。
5.7.insert():特定位置添加成员。
两个参数,insert(m,member),在索引为m(也就是第m+1的位置进行添加)。
注意:因为是两个参数,索引多加一个参数就会造成错误。
5.8.remove():从列表中删除指定成员。
注意:列表中有多个重复成员时,一次只能删第一个。
5.9.del:用索引进行删除, del list [m] 删除列表第m-1 的数据值。
5.10.pop{}:将指定位置的元素取出来,并删除,也就是说有返回值。删除的数据,返回出来就是已经删除后的列表。
>>> list1 = [123, 456, 789]
>>> list1
[123, 456, 789]
>>> b = list1.pop(1)
>>> b
456
>>> list1
[123, 789]
5.字典(dict)
1.本质:存储多个数据值,且方便获取,数据间用逗号个开,用大括号包含,数据值形式是K:V键值对。
K是对V具有描述性性质的信息。
V的真实的数据值信息,V可以为任意的数据类型。
为什么按K取值,因为字典是无序性的所以不支持索引取值。
如果K不存在时,字典中没有K这个数据,则会报错。
6.布尔值(bool)
本质:判断事物的可行性。
两种状态。 True/False
命名规律:以is开头
在实际项目中数据库存储数据的特征,用一个字段来表示数据是否删除。
没有内置函数。
7.元组(tuple)
7.1.本质:被称为不可改变的列表,用个小括号来包含多数据值,是一个元组是安全的有序容器。
eg:tuple1 = (1, 2, 3)
用索引取值。
list1[0] = 'w' # 打印出[w, 2, 3]
tuple[0] = 'w' # 打印会出错。
7.2.数据类型转换:可以将列表转换成元组,但是数据值不能修改。
7.3.内置函数:
7.3.1 len()计算元组元素个数。
7.3.2 max()返回元组中元素最大值。
7.3.3 min()返回元组中元素最小值。
7.3.4 tuple(列表),将列表转换成元组。
>>> l1 = ['xx',1,2,'ww']
>>> l1
['xx', 1, 2, 'ww']
>>> t1 = tuple(l1)
>>> t1
('xx', 1, 2, 'ww')
8.集合(set)
8.1.本质:集合用于去重和关系运算,重复元素在set自动会被过滤掉。
(去除重复的部分,判断两个集合间的关系)
用大括号包含多个数据值,符号和字典一样,但是内部结构不一样。类似dict,是一组key的集合,不存储value
8.2.定义空集合是不一样的。
不能直接用 set = {},这样返回的数据类型是字符串型,索引需要加个set才能表示是集合的空集合。eg:s = set()。
8.3数据类型转换:
8.3.1 列表(list)转换成集合(set)
ll = [1,2,3,4,5]
s1 = set(ll)
print(s1) #{1, 2, 3, 4, 5}
print(type(s1)) #<class 'set'>
8.3.2 元组(tuple)转换成集合(set)
2 = (1,2,3,4,3,2)
s2 = set(t2)
print(s2) #{1, 2, 3, 4}
print(type(s2)) #<class 'set'>
8.4内置函数:
8.4.1 set.add()元素的添加。
s4 = set([1,2,3,4,5])
s4.add(6) #{1, 2, 3, 4, 5, 6}
s4.add(3) #可以添加重复的,但是不会有效果
#s4.add([7,8,9]) #报错 不能以列表的形式添加。
s4.add((7,8,9)) #{1, 2, 3, 4, 5, 6, (7, 8, 9)}
#s4.add({1:"a"}) #报错 不能以字典的形式添加。
print(s4)
8.4.2 set.update(列表,元组,字符串)
任何数据类型都是以最小单位的形式插入。先拆后一个个放。
s5 = set([1,2,3,4,5])
s5.update([6,7,8]) #{1, 2, 3, 4, 5, 6, 7, 8}
s5 = set([1,2,3,4,5])
s5.update((9,10)) #{1, 2, 3, 4, 5, 9, 10}
s5 = set([1,2,3,4,5])
s5.update("luck") #{1, 2, 3, 4, 5, 'c', 'k', 'u', 'l'}
s5 = set([1,2,3,4,5])
s5.update("never","luck") #{'u', 1, 2, 3, 4, 5, 'k', 'l', 'n', 'r', 'v', 'c', 'e'}
8.4.3 set.remove()删除指定元素。
s6 = set([1,2,3,4,5])
s6.remove(3)
print(s6) #{1, 2, 4, 5}
8.4.4 遍历
s7 = set("hello")
for i in s7:
print(i)
'''
输出:
h
o
e
l
'''
8.4.5 set 没有索引。
s7 = set("money")
for index, data in enumerate(s7):
print(index, data)
'''
0 y
1 n
2 o
3 e
4 m
'''
#set没有索引
#print((s7[3]))#会报错
会出现:TypeError: 'set' object is not subscriptable
8.4.6 交集 &
s8 = set([1,2,3])
s9 = set([2,3,4])
a1 = s8 & s9 #交集
print(a1) #{2, 3}
print(type(a1)) #<class 'set'>
8.4.7 并集 |
s8 = set([1,2,3])
s9 = set([2,3,4])
a2 = s8 | s9 #并集
print(a2) #{1, 2, 3, 4}
print(type(a2)) #<class 'set'>