一、列表操作
列表操作主要包括index,append,pop,insert,del operator,iteration,contains,get slice,reverse,sort等内置操作函数。
(1)index O(1)
y=[45,67,89,45,34,22,1]
y.index(45)
index函数的变量为列表中的值,其返回结果是该变量所处列表中的位置。上述代码运行结果为0。
(2)append O(1)
alist = [0,5]
b = 1
alist.append(b)
alist
append函数变量为一个新的值,其运行结果是将这个新的值插入到列表的末尾。上述代码运行结果为[0,5,1]。
(3)pop() O(1)
s = [32,45,63,12,45,89,77]
s.pop()
pop()函数没有变量,其作用是移除列表末尾的元素,并且返回该元素的值。上述代码运行结果为77。
(4)pop(i) O(n)
s = [32,45,63,12,45,89,77]
s.pop(2)
pop(i)函数用于指定移除列表中的某个元素,其变量i是所要移除元素在列表中的位置,移除该元素后会返回被移除元素的值。上述代码运行结果为63。
(5)insert O(n)
list = [2,3,3,6,6,6]
list.insert(3,5)
list
insert(i,item)函数用于将特定元素插入到列表的特定位置中,其变量有两个,分别是目标位置和目标元素的值。上述代码运行结果为[2, 3, 3, 5, 6, 6, 6]。
(6)del O(n)
s = [32,45,63,12,45,89,77]
del s[2]
s
del 函数用于删除元素,其变量和pop(i)函数一样都是目标元素的位置。上述代码运行结果为[32, 45, 12, 45, 89, 77]。
(7)iteration O(n)
列表的iteration操作主要通过for语句来实现循环遍历,而这种循环也就是我们常说的迭代。
a = ['h','e','l','l','o']
for i in a :
print(i)
上述代码运行结果为h e l l o (纵向)。
(8)contains O(n)
__contains__主要用于判断某字符是否存在于字符串中,其变量就是所要判断的那个字符。
alist = ["a", "b", "c"]
alist.__contains__("d")
"a" in alist
上述代码中,我们看到contains函数两边加了两段下划线,在此另外说一下就是python中有两个下划线的函数一般属于内置函数。其使用in关键字会调用contains函数的功能,在此代码中__contains__函数和in函数的功能是一样的,运行结果分别为False和True。
(9)reverse O(n)
reverse函数在列表操作中主要的作用就是对列表进行反向排序。
a = [4,5,6,73,4,4,4,4,2]
a.reverse()
a
上述代码输出结果为[2, 4, 4, 4, 4, 73, 6, 5, 4]。
(10)sort O(n log n)
sor函数用于排序,list.sort(cmp=None, key=None, reverse=False)。
cmp:是可选参数,就是一种排序方法,如果指定了该参数则排序方式会按照改参数的方法来排序。
key:是用来进行比较的元素,是从迭代对象中选出来然后进行比较。
reverse:用于指定排序规则,reverse=True(降序),reverse=False(升序,默认)。
a = [4,5,6,73,4,4,4,4,2]
a.sort()
a
上述代码输出结果为[2, 4, 4, 4, 4, 4, 5, 6, 73],按照升序排列。
a = [4,5,6,73,4,4,4,4,2]
a.sort(reverse = True)
a
上述代码输出结果为[73, 6, 5, 4, 4, 4, 4, 4, 2],按照降序排列。
二、字典操作
字典操作主要包括copy,get item,set item,delete item contains(in),iteration等函数。
(1)copy O(n)
copy函数主要的作用就是返回一个字典的浅复制。
dict1 = {'time':'morning','people':'mike','number':[5,6,8,2]}
dict2 = dict1.copy() #copy
dict3 = dict1 #直接赋值(dict1的引用/别名)
dict1['time'] = 'evening'
dict1['number'].append(1)
print(dict1,"\n",dict2,"\n",dict3)
上述代码的运行结果为:
{‘time’: ‘evening’, ‘people’: ‘mike’, ‘number’: [5, 6, 8, 2, 1]}
{‘time’: ‘morning’, ‘people’: ‘mike’, ‘number’: [5, 6, 8, 2, 1]}
{‘time’: ‘evening’, ‘people’: ‘mike’, ‘number’: [5, 6, 8, 2, 1]}
通过结果可以看出dict1被修改后dict3作为dict1的引用也随之变化,但dict2[‘time’]没有变,原因是dict2浅拷贝了dict1,二者的父对象各自独立,但是其中的子对象还是指向同一个对象即还是引用,所以对父对象修改不会引起dict2的变化,但是单独对子对象进行修改操作(dict1[‘number’].append(1))则dict2中的子对象也会被修改。
直接赋值、浅拷贝和深拷贝的区别:
其中深拷贝用的是copy模块中的deepcopy函数。
(2)get itemO(1)
get item主要是利用key来获取value。
dict0=dict({'语文':90,'数学':85,'外语':90,'物理':95,'化学':85})
dict0.get('数学')
返回结果为85。
(3)del item O(1)
del用于删除字典元素。
dict0=dict({'语文':90,'数学':85,'外语':90,'物理':95,'化学':85})
del dict0['语文']
dict0
返回结果为{‘数学’: 85, ‘外语’: 90, ‘物理’: 95, ‘化学’: 85}。
(4)contains[in] O(1)
contains函数的字典操作和列表操作功能一样,都是判断某key或value是否存在于字典中。
dict1 = {'time':'morning','people':'mike','number':[5,6,8,2]}
dict1['number'].__contains__(9)
'time' in dict1
上述代码返回结果分别为False和True,in关键字和__contains__函数的功能一样。
(5)iteration O(n)
iteration用于迭代,在字典操作中可通过for语句实现迭代循环。
poi = {'name':'shop','city':'shanghai','information':{'address':'somewhere','num':66663333}}
print('All keys:')
for i in poi.keys():
print(i)
print('All values:')
for i in poi.values():
print(i)
返回结果为:
All keys:
name
city
information
All values:
shop
shanghai
{‘address’: ‘somewhere’, ‘num’: 66663333}