上一节讲解的字符串类型,可以通过slice切片、索引index来取字符串中的内容。这一小节我们深入了解一下序列类型 序列是指:列表、元组、字符串这3个类型,与字符串一样,序列的2个主要特点就是索引操作符和切片操作符。 索引操作符让我们可以从序列中抓取一个特定item;切片操作符让我们能够获取序列的一个切片,即一部分序列。
序列 索引同样可以是负数,位置是从序列尾部开始计算的。因此,shoplist[-1]表示序列的最后一个元素而shoplist[-2]抓取序列的倒数第二个item;
切片操作符中[begin:end:steps]的第一个数表示切片split开始位置,end表示切片结束位置,如果不指定则分别表示首部、尾部,step=1。 str[:] 返回整个序列的拷贝,用负数做split,负数用在从序列尾部开始计算的位置,例如str[:-1]返回除了最后一个item外包含所有item的序列切片。 注意切片是含首不含尾即[begin, end),只要是序列(列表,元组,字符串)索引取数据都是[index]方括号
1.可以向其中存储多种不同的数据类型(与list[]一致),如int,字符串,float: >>>zoo=(‘wolf’,‘elephent’,23,3.5) 2.元组对象不可改变,与字符串类似,当元组变量被重新赋值后,id()就变了, 试图通过index修改tuple会报错
常用元组来给一组变量赋值
>>> a,b,c=(1,2,3) >>> a 1 >>> b 2 >>> c 3 >>> d,e,f,g=zoo >>> d 'wolf3' >>> e 'elephent2' >>> f 23 >>>列表list[]中的item值随意更改
>>> list3 ['Simon', 'David', 12, 23.5] >>> id(list3) 3530184 >>> list3[0] 'Simon' >>> list3[0]="Hello" >>> list3 ['Hello', 'David', 12, 23.5] >>> id(list3) 3530184 >>> 更改后id不变,是在原内存空间修改值,而非新创建字典是Python中唯一的映射类型(哈希表hashtable),字典是无序的。 字典对象时可变的,但是字典的键key必须使用不可变对象,并且一个字典中可以使用不同类型的键值key(混合使用数字,字符串等) keys()或者values()返回key list列表或values list列表 items() 返回包含键值对key-value的元组
keys就相当于其他数据类型中的索引index,同样获取value只能凭key。
>>> dict1={'name':'milo','age':25,'gender':'male'} >>> dict1 {'name': 'milo', 'age': 25, 'gender': 'male'} >>> type(dict1) <class 'dict'> >>> dict1['name'] 'milo' >>> dict1.keys() dict_keys(['name', 'age', 'gender']) >>> dict1.values() dict_values(['milo', 25, 'male']) case2 >>> name='xixi' >>> dict2={1:'123',2:234,name:'milo','age':25,'gender':'female'} #key可以用变量,参考dict2中name >>> dict2[name] 'milo' >>> dict2['xixi'] 'milo'访问dict{}字典中的值
直接使用key访问:key不存在会报错,可以使用(not)in判断 循环遍历:for key in dict2.keys(): 使用迭代器:for key in dict2: 使用迭代器:for key,value in dict2.items():字典更新update,向其添加insert new新的key-value可以直接类似访问字典的方式,而且是无序的,再次表明dict的无序性
>>> dict1 {'name': 'milo', 'age': 25, 'gender': 'male'} >>> dict1['tel']='13817108096' >>> dict1 {'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '13817108096'} >>> >>> dict1['tel']='110110' >>> dict1 {'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110'} >>> dict1['circle']='python' >>> dict1 {'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110', 'circle': 'python'} >>> del dict1['key']删除字典中key对应的键值对 case >>> dict1 {'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110', 'circle': 'python'} >>> del dict1['circle'] >>> dict1 {'name': 'milo', 'age': 25, 'gender': 'male', 'tel': '110110'} >>> dict1.pop('age') 25 >>> dict1 {'name': 'milo', 'gender': 'male', 'tel': '110110'} dict1.pop(key)删除并且返回key的value dict1.clear()删除字典所有元素 del dict1 删除整个字典 字典{} Len(),hash()(用于判断某个对象是否可以做字典的键,非哈希类型报TypeError错误) dict.clear():删除字典中的所有元紊 dict.fromkeys(seq,val=None):以seq中的元素为key创建并返回一个dict字典,val为指定的默认值 dict.get(kev,default=None):返回key的value,如果该键不存在返回default指定的值 dict.has_key(key):判断字典中是否存在key,建议使用in和not in代替 dict.items():返回键值对元组的列表. dict.keys():返回字典中键的列表. dict.iter*():iteritems(),iterkeys(),itervalues()返回迭代子而不是列表 dict.update(dict2):将dictZ中的键值对添加到字典dict中,如果有重复搜盖,原字典不存在的条目添加进 dict.values():返回字典中所有值的列表。