上一章学习了关于字符串的操作,包括字符串的方法和格式化,字符串的切片方法,简单实用,格式化又分格式化表达式(%)和格式化方法(.format)两种。在python中,要充分使用dir()/help(),对内置函数或方法进行官方的认识。
现在第八章,主要学习列表和字典,都是可变对象,支持原地修改和头尾增删。
列表属于有序的集合,可以进行集合+/*(类似字符串的重复)/for(循环遍历)/in
>>>list1 = [1,2]
>>>list2 = [2,3]
>>>list1 + lsit2
[1,2,2,3]
>>>list1 * 2
[1,2,1,2]
>>>for i in list1:print(x,end=' ')
1 2
>>>2 in list1
True
列表的增加,使用append(增加的对象为单个对象到列表中)/extend(增加的对象为一个列表,实现两个列表进行+操作)/insert(传入索引和值,指定位置增加)
>>>list1.append(3) #无返回,对象为单个对象
>>>list1
[1,2,3]
>>>list1.extend([1,2]) #无返回,对象为列表对象
>>>list1
[1,2,3,1,2]
>>>list2 = [1,2,3]
>>>list2.insert(1,4) #无返回,须传入索引和值两个参数
>>>list2
[1,4,2,3]
列表的删除,使用pop(从尾部删除,不传参)/remove(指定对象删除)/del list1[X](指定索引进行删除)
>>>list1.pop() #返回被删除的对象
2
>>>List1.remove(1) #删除值为1,如果同时有多个存在,只删除索引最小的一个
[2,3,1,2]
>>>del list1[-1] #无返回
>>>list1
[2,3,1]
列表的查找,使用索引和切片
>>>list1[0]
2
>>>list1[0:2}
[2,3]
列表的排序/反转/元素个数
>>>list2 = [1,3,4,2,3]
>>>list2.sort() #无返回,不传参,实现列表自身升序排列
>>>list2
[1,2,3,3,4]
>>>list3 = [1,3,4,2,3]
>>>sorted(list3) #与上一句效果类似,返回一个新的列表,而不是修改对象自身
[1,2,3,3,4]
>>>list2.reserve() #无返回,不传参,实现列表自身的反转
>>>list2
[4,3,3,2,1]
>>>sorted(list3,reverse=True) #相当于同时执行了sort()和reverse(),且返回一个新的列表,不修改对象自身
[4,3,3,2,1]
>>>list(reversed(list3)) #使用reversed将list3反转,类似reverse(),但使用时须加上list(),因为它是一个迭代器(?),返回反转后的结果
[3,2,4,3,1]
>>>list2.count(2) #传入要查找的元素对象,返回对象个数
1
列表解析表达式
>>>list3 = [i**3 for i in range(3)]
>>>list3
[0,1,8]
>>>list4 = list(map(ord,'spam'))
>>>list4
[115,112,97,109]
>>>list5 = list(map(abs,[-1,-2,0]))
>>>list5
[1,2,0]
字典,属于无序的集合,需要通过键来取值,是一种支持快速检索的数据结构
字典的三种创建方法dict.fromkeys()/dict(zip())/dict()
>>>d1 = dict.fromkeys(['a','b']) #新建一个字典,遍历列表并设置为键名,默认的值为None
>>>d1
{'a':None,'b':None}
>>>d2 = dict(zip(['a','b'],[1,2])) #新建一个字典,遍历两个列表(两个列表长度不同时,以较短的列表长度为基准创建字典),分别作为键和值
>>>d2
{'a':1,'b':2}
取出字典的键.keys()/值.values()/键值对.items()
>>>d2.keys() #返回字典的键,类型为dict_keys
dict_keys(['a','b'])
>>>d2.values() #返回字典的值,类型为dict_values
dict_values([1,2])
>>>d2.items() #返回字典的键值对,类型为dict_items
dict_items([('a',1),('b',2)])
字典的复制
>>>d2.copy()
{'a':1,'b':2}
字典属于无序的集合,也具有集合的一些合并update
>>>d1 = {'a':1,'c':1}
>>>d2 = {'a':2,'b':3}
>>>d1.update(d2) #无返回,如果两个字典有相同的键,以第二个字典的值为准
>>>d1
{'a':2,'c':1,'b':3}
字典的删除pop(key)/del d1(key)
>>>d1.pop('b') #返回这个键的值,如果键不存在则报错
3
>>>d1
{'a':2,'c':1}
>>>del d1['c'] #无返回,如果键不存在则报错
>>>d1
{'a':2}
字典新增,可以直接赋值
>>>d1['c'] = 4 #如果键不存在,则新建;如果存在,则更新值
>>>d1
{'a':2,'c':4}
字典解析表达式
>>>d2 = {x:x**2 for x in range(3)}
>>>d2
{0:0,1:1,2:4}
>>>d2[2] #字典的键可以为数字,但必须是不可变对象
4