内容上的区分
按照原地址的内容是否可变,大致可以分为两种:
1、可变数据类型:列表、字典
2、不可变:字符串、数字、元组
按照访问顺序,可以分为以下三种:
1、顺序访问:字符串、列表、元组
2、直接访问:数字
3、映射:字典
集合
集合的特点有以下三点:
1、集合的内部可由不同元素组成
2、集合为无序的数据类型
3、集合中元素必须全部是不可变类型
s = {1,2,3,4,5,6}
集合set的内置方法
- add() #添加一个元素
s.add('s')
- clear() #清空集合元素
- copy() #复制集合
- pop() #随机删除一个元素
- remove() #删除一个指定的元素(括号内为指定元素)
- discard() #功能同上。但是,指定元素不存在时,使用该方法会报错
- intersection() #求两个集合的交集
- union() #求两个元素的并集
- difference() #求两个元素的差集
- symmetric_difference() #求两个元素的交叉补集
- difference_update() #删除差集
- isdisjoint() #检查交集是否为空集
- issubset() #判断一个集合是否为目标集合的子集
- isuperset() #判断一个集合是否为目标集合的父集
- update() #将一个可迭代对象更新到另一个集合中
注:集合是可变类型
s = frozenset() #用此方法可将集合定义为不可变类型
字符串格式化
百分号字符串格式化
话不多说。上代码!
msg = 'i am %s my hobby is %s' %('lhs','alex')
tpl = "percent %.2f" %99.97623
tpl = 'i am %(name)s age %(age)d' %{"name":"alex","age":18}
msg = 'i am \033{45:1m%(name)+60s\033[0m my hobby is alex' %{name:'alex'}
在打印的时候,可以使用一种sep方法来定义分割符:
print('root','x','0','0',sep=":")
format方法字符串格式化
tpl = 'i am {},age {},{}'.format("seven",18,'alex')
tpl = 'i am {1},age {1}'.format("seven",18,'alex') #花括号内的数字,决定了索引值,从而决定对应取值
tpl = "i am {name},age {age},really {name}".format(name="seven",age=18) #可以用英文字符串指定取值
tpl = "i am {name},age {age},really {name}".format(**{name="seven",age=18}) #字典的使用方法
tpl = "i am {:s},age {:d},money {:f}".format("seven",18,88888.1) #类似于百分号字符串格式化方法的格式化形式
tpl = "i am {:s},age {:d}".format(*["seven",18]) #字典的格式化方法
tpl = "i am {name:s},age {age:d}".format(name="seven",age=18)
一个格式上的区别:
:X---->大写的abcd
:x----->小写的abcd
:%---->将传入的数字视为百分数,将其转换成正常数后进行输出
函数
def 函数名(参数)
函数代码块
return 返回值 #可以没有
def:定义函数的关键字
test:函数名
()内定义形式参数
"":文档描述
return:定义返回值
为什么要有函数?
1、代码重用
2、代码一致,易于维护
3、可扩展性
过程:没有返回值的函数
如果没有返回值,Python自动返回一个None值
如果一次有多个返回值,则返回由这些值组成的元组
返回值情况归纳:
返回值数 = 0,返回None
返回值数 = 1,返回object
返回值数 > 1,返回tuple
函数参数
函数一旦碰到return,函数便立即结束
形参和实参的个数,形式必须一致
使用关键字参数时,位置可以不固定
使用位置参数时,必须一一对应,缺一不可,多一不可
如果将两种参数混合使用,位置参数必须在关键字参数左边
test(1,y=2,3) #报错
test(1,3,y=2) #报错
test(1,3,z=2,y=4) #报错
**与字典有关,*与列表有关。通常是x,*args,**kwargs