一、列表操作
列表操作主要包括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中的子对象也会被修改。

直接赋值、浅拷贝和深拷贝的区别:

python 字典pop可以多个吗_python


其中深拷贝用的是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}