1、序列类型可以使用成员操作符in,大小计算函数(len()),分片([]),都可以迭代。Python内置的序列类型:str,list,tuple,bytearray,bytes.标准库中的序列类型:集合,命名的元组。
2、*也可作为序列拆分运算符,当且仅当其在赋值运算符右侧时。首先将右侧的序列根据左侧变量个数拆分,并首先按照顺序将数据项赋给没有*的变量,然后剩下的数据项赋给带*的变量
3、列表推导/列表内涵:[expression for item in list]/[expression for item in list if condition]
[s+c+d for s in sex for c in color for d in din]
4、元组和列表都是有序的序列,对其迭代时以从左到右的顺序提供数据项。都包含0个或多个对象引用,数据项可以是任意类型,然后对于集合,是无序的,对其迭代时,集合类型以任意顺序提供数据项。并且其数据项只能是可哈希的类型,float,int,tuple,str都是可哈希的,list,set,dict都是不可哈希对象。因为集合是无序的,可变的,所以不存在索引位置,也就不能分片或者是步长分片。
5、tuple(),list(),set()都是可调用的函数,无参数是返回空的元组,列表,集合,有参数时尝试将其转化为对应的组合类型。可以看出list和tuple是有序的,set是无序的,但是可以过滤重复的数据项。
5、集合内涵与列表内涵相似:{expression for each in set}/{expression for each in set if condition}
6、字典是一种无序的组合类型,包含0或多个键值对。空的{}会创建空字典,不会创建空集合。键是指向可哈希运算的对象的对象引用,而值是指向任意数据类型的对象引用。即键只能是str,touple,float,int型。值可以是任意型。
7、创建字典主要两种方式:直接创建:
另外一种是d=dict(root=18,blue=[75,'r',2],21='bejn')字典采用[]操作符存取数据项,键是可哈希的对象的引用,‘root’就是可哈希的字符串类型,字面值形式的对象引用(x='root')d['root'](d[x])一个意思。[]内具体的和哈希的类型,虽然d[(4,11)]看着很怪,d[y](y=(4,11))的背后还是d[(4,11)]
8、任意可迭代的组合类型都可调用len(),max(),min(),all(),any()函数。当然最大最小必须是针对值而言,应该全是数值型的组合类型才有意义。否则,提示不能将字符换类型转化为int
9、关于range(),对其type表明其是range类型,range(n)提供了n个连续的整数,可以理解为将n个整数存储在了range类型中,如果想查看此可迭代类型中的每个数据项,分两步走:i=iter(range(n))#创建迭代子i,i是个迭代对象。
第二步:next(i)#循环使用next(i)逐个访问可迭代对象range(n)中的每个数据项。
访问所有可迭代数据类型的所有数据项实际上都是执行了上面两步,for in只是封装了这两部而已。
这样访问未免太过繁琐,可以list(range(n)),touple(range(n))将range类型的整数数据项转化为列表或者是元组的数据项,range(n)的存在意义也正在此。
10、enumerate(i,[index]),返回(index,one item),序列类型都可以用此函数,用法即是在返回每个数据项的同时,对每个数据项标记,返回值中index即是标记,默认标记从0开始,可以在函数中重新定义。enumerate(d)对字典操作时,迭代出结果是‘键’,enumerate(d.items())才可以迭代出’键值对‘,d.items()返回值是(key,value)的元组。所以才会报错,需要不止两个值。(index,key,value)=(index,(key,value))明显对不上号~搞定~
11、字典与列表,元组,集合等的迭代不同,因为字典内部是键值对,键和值都可迭代,所以,对其迭代与一般的序列稍有不同,直接对字典迭代得出的是‘键’。