一、数值
1、int 整数
2、float 浮点数包含小数
3、bool 布尔值 true false,条件是否成立
二、字符串
1、string 字符串
*定义:使用单引号、双引号或者是三引号包裹的数据,有引号就是字符串。
*区别:单引号包裹里可以显示双引号或三双引号(单行)
双引号包裹里可以显示单引号或三单引号(单行)
三单引号包裹里可以显示双引号或单引号(多行)
三双引号包裹里可以显示单引号或双单引号(多行)
str1="I'm fei"
str2='我想说:"八嘎"'
str3='''"你想干啥?" '''
str4=""" '你管得着吗?'"""
注:两个重点 1、单、双引号为单行,三单、双引号可多行。
2、双引号(无论个数)里可以输出显示单引号(无论个数),单引号(无论个数)里可以输出显示双引号(无论个数)。
*编码:
1、意义:把二进制翻译成我们能看懂的字符
2、演变:1、ASCII==》》Gb2312==>>gbk1.0==>>gb18030
2、ASCII==>>unicode==>>uft-8
python2.x 默认ascii
python3.x默认Unicode
* 转义符 \
* 字符串中使用\(反斜杠)来表示转义,也就是说\后面的字符不再是它原来的意义。
如;n在串里表示字母n,\n在串里就成为了换行
java里有不能转的,Python不太清楚,知道以后再改
* 取消转义,在字符串的最前面加上字母r来加以说明
s1 = r'\'hello, world!\''
s2 = r'\n\\hello, world!\\\n'
print(s1, s2, end='')
*运算: 1、+:拼接,两个字符串拼成一个
2、*:乘几就把被乘数复制几份然后拼接在一起
3、+=:a+=b ab值相加,然后再赋值给a
4、in:r=a in b b里是否包含a ,结果为布尔值
5、[]:切片 r=a[1] 从字符串中取出指定位置的字符(下标运算)
6、[x:y:z]:字符串切片(从指定的开始索引到指定的结束索引)x=起始位置(默认0),y=结束位置(默认len(str),顾头不顾尾,
不算这个位置的数据)z= 步长(默认1),xyz可以为负数,但是逻辑有点乱,就先不说了,基本上就是倒叙的意思
* 方法
str1 = 'hello, world!'
# 通过内置函数len计算字符串的长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获得字符串每个单词首字母大写的拷贝
print(str1.title()) # Hello, World!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))
# 检查字符串是否以指定的字符串开头
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit()) # False
# 检查字符串是否以字母构成
print(str2.isalpha()) # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum()) # True
str3 = ' jackfrued@126.com '
print(str3)
#获得字符串修剪左右两侧空格之后的拷贝
print(str3.strip())
三、[ ] 列表(数组)
1、定义 list1=["aa",2.0,5,7,100],以中括号包裹,以逗号分隔,起始位置从0开始
2、创建
list1 = [1, 3, 5, 7, 100]
print(list1) # [1, 3, 5, 7, 100]
# 乘号表示列表元素的重复
list2 = ['hello'] * 3
print(list2) # ['hello', 'hello', 'hello']
3、增
* append 在原有列表的尾部追加数据 如:list1.append(200)
* insert(x,y)根据坐标x把数据y插入到原有数据
* += 在原有列表的尾部追加数据 如:list1 += [1000, 2000]
* extend()在原有列表的尾部追加数据,也可以理解为合并两个数组 如:list1.extend([1000, 2000])
* 生成式 f = [x for x in range(1, 3)] 在1到3的范围内从1开始,依次赋值给x(第二个x),到3结束(不包括3),然后由x根据规则,依次添加到列表里
f=[x*2 for x in range(1,10)] 在1到10的范围内从1开始,依次赋值给x(第二个x),到10结束(不包括10),然后x乘以2,依次添加到列表里
f=[ x+y for x in 'ABCDE' for y in '1234567' ] ,整体规则和上面差不多,可以理解为对'ABCDE'和'1234567'两个列表进行双重for循环后的两个值相加,然后添加到list里;
f=(x**2 for x in range(1,10)) ,规则同上,不同的是,它生成的是一个容器,不会占用内存,但从容器里取数据的时候会增加额外时间,
4、删
* remove(x) 删除数据x,如:list1.remove("3") ,无返回值
* pop(x) 删除坐标x上的数据 如:list1.pop(0) ,有返回值,为被删除的数据
* clear() 清空列表
5、改
* list[x]=300 通过对列表对应坐标重新赋值的操作,达到修改的目的
* list = [] 重新整体赋值
* sorted(list) 根据字母表顺序排序,不对原list产生变化,生成一个新的list
* sorted(list, reverse=True) 根据字母表顺序排序,可以指定正序/倒序,对原list不影响
* sorted(list, key=len) 根据列表里每个元素的长度由低到高排序,对原list不影响
* list.sort(reverse=True) 在list上根据字母表顺序排序,直接改变当前list数据
6、查
* 循环查找 for elem in list: 以单个元素为基准循环list, 输出 elem 元素,也就是
# 通过for循环遍历列表元素
for elem in list1:
print(elem)
for index in range( len):以坐标为基准循环指定长度的范围,依次输出index坐标,然后再去列表中拿数据list[index]
# 通过循环用下标遍历列表元素
for index in range(len(list1)):
print(list1[index])
for index,elem in enumerate(list1):以坐标和元素为基准,输出元素和坐标
# 通过enumerate函数处理列表之后再遍历可以同时获得元素索引和值
for index, elem in enumerate(list1):
print(index, elem)
* [x:y:z] 切片,从x坐标开始,到y坐标结束(不包含这个坐标的值),以y步长为规律,截取成一个新的list(和字符串的一样)y为正数,从左到右,y为负数,从右往左
四、()元组
1、定义:与列表类似,是一种用来存储多个数据的容器类型,定义后不可修改(可以使用+号拼接两个元组组成一个新的元组,变相修改)
2、创建:t=('陌',34,True,'保定'),使用()大括号包裹,逗号分隔,下标从0开始。
3、取值:elem = t [1],根据下标取值
4、类型转换:
* list(t):元组转换成列表,t参数为元组数据
* tuple(list):列表转换成元组,list参数为列表数据
5、优势:
* 由于元组具有创建后不可修改的特性,天然就拥有了再线程安全上的优势。
* 元组在创建时间和占用的空间上面都优于列表。
6、内置函数
* cmp(tuple1, tuple2):比较两个元组元素。
* len(tuple):计算元组元素个数。
* max(tuple):返回元组中元素最大值。
* min(tuple):返回元组中元素最小值。
* tuple(seq):将列表转换为元组。
五、{}集合
1、定义:使用{}大括号包裹,逗号分隔,元素不可重复,一种可以无序且不可重复的存储数据的数据类型,可以进行交集、并集、差集等运算。
2、使用场景:
* 去重:如列表去重
* 关系测试:判断数据是否存在 交集,并集,差集 等关系。
3、类型:
* set:可变集合
* frozenset:不可变集合(这个先忽略)
2、创建:
* set1={1,2,3,3,3,2}:粗暴的拿大括号包裹若干不同元素
* set1=set(....):构造器语法创建,如:set2=set(range(1,10)) ,set3=set((1,2,3,3,2,1))
* 推导式语法:set4 = { num for num in range(1,100) if num % 3 == 0 or num%5 == 0}
* s.copy():复制生成一个新的集合。
3、增
* s.add(x):如果集合s中不存在元素x,则将元素x添加到集合s中。如果存在x,则不添加,不会报错
* a.update(b,c,d...):把bcd等可迭代的参数(可以使集合也可以是其他,重点是可迭代)添加到a集合里,并去重,可以理解为,abcd取并集后赋值给了a,参数可以是1个,无返回值
4、删
* s.clear():删除集合s中的所有元素。
* s.discard(value):移除集合s中的value元素。若value元素存在,则移除,不存在也不报错。
* s.remove(value):移除集合s中的value元素。若value元素存在,则移除,不存在则报错(产生KeyError异常)。
* s.pop():随机移除集合s中的一个元素并返回该元素。若集合为空则报错(产生KeyError异常)
5、运算
* 交集: set1.intersection(set2) / set1&set2 相同的部分
* 并集:set1.union(set2) / set1|set2 不同的部分
* 差集:set1.difference(set2) / set1-set2 set1在set2中不同的部分,可以理解为set1、set2分别去掉相同的数据,然后把set1返回,set2不管了
* 对称差: set1.symmetric_difference(set2) 取set1和set2中不同的数据,赋值给set1 函数改变集合set1元素。无返回值
set1.symmetric(set2) / set1^set2 取set1和set2中不同的数据,生成一个新集合 函数不改变集合的元素,返回一个新生成的集合
* 子集:set2.issubset(set1) / set2<=set1 set2是否是set1的子集,返回布尔值
* 超集:set1.issuperset(set2) / set1>=set2 set1是否是set2的父集,返回布尔值
六、{ :,:}字典
1、定义:一种可变容器模型,且可存储任意类型对象。用{}大括号包裹,元素间用逗号分隔,每个元素均为键值对,键值对由:冒号连接,表现形式为 key:value 。如:d = {key1 : value1, key2 : value2 }
2、创建
* scores={'陌':100,'王':'狗日的,'狄仁杰':82}:字面量语法,大括号包裹,逗号分隔,元素为键值对,键值用:冒号连接
* items1=dict(one=1,two=2,three=3,four=4):构造器语法
* dict( zip ( ['a','b','c'] , '123')):通过zip函数将两个序列压成字典
* items3={ num : num**2 for num in range(1,10)}:推导式语法
3、增
* update(冷面=67, 方启鹤=85):在原字典尾部追加键值对数据
4、删
* scores.popitem():返回并删除字典中的最后一对键和值。
* scores.pop('陌',100):删除字典给定键 key 所对应的值,返回值为被删除的值。如果key没有对应的值,就返回100这个给定的默认值
* scores.clear():清空字典
5、改
* scores['狄仁杰'] =20:修改字典中对应键的值
6、查
* scores['狄仁杰'] :通过键可以获取字典中对应的值
* scores.get('狄仁杰'):通过键可以获取字典中对应的值(与上面的方法不同的是,get方法可设默认值,如果没找到key,就返回默认值,如:scores.get('苍老师'),18)
* dict.keys():以列表返回一个字典所有的键
* dict.values():以列表返回字典中的所有值
注:1、键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
2、值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
七、工厂函数
1、说明:
* 起名为函数,那他就应该是函数,而不是一个类对象,只不过一般的函数返回的都是变量或者计算结果,工厂函数有点特殊,它返回的是类的实例
* 可以生产出属性相同的对象
2、分类
* type():查看类型
* int(),long(),float(),complex(),bool(),str(),unicode(),list(),tuple(),dict(),dict(),set()(可变集合),frozenset()(生成不可变集合):生成指定类的实例