最近学习了cs61a,记录一下学习成果。下面主要讲一下python list
的一些知识。里面的代码放到pythontutor.com这个网站,然后点击Visualize Execution
,之后一步步的执行就可以看到里面list
的变化。
a = [1, [2,3], 4]
b = list(a)
c = a[:]
list(s)
和s[:]
复制新的列表的作用是等效。他们复制的是里面的值,所以**b
和c
的第二个元素和a
的第二个元素,指向的是同一个子列表。也就是说用list
和s[:]
复制列表时,列表里面的子列表只是把指针复制过来了,而不是把值复制过来。**
is
比较的是两个他们本身,而==
比较的是他们的值是不是一样。
a = [1, 2, 3]
b = [1, 2, 3]
c = a
a == b
a is c
3. append
和extend
的区别
append
是直接在后面加上原来的列表。
a = [1, [2,4],3]
b = [[3], 4]
c = 3
a.append(b)
a.append(c)
b.append(c)
extend
(和+=
一样)是用新建一个列表加在后面,和list
方法一样子列表知识指针。
a = [1, 2]
b = [1, 2]
c = [3, [4]]
a.extend(c)
a += b
c[1][0] = 10
4. pop
和remove
的用法
pop
方法移除并返回list
中最后一个元素。当我们给他一个整数参数i
,他移除并返回list
中下标为i
的元素。
a = [0, 1, [2, 3], 4]
b = a.pop(2)
c = a.pop()
remove
方法有一个参数,并且必须与list
中至少一个值相同。他移除list
中第一个与参数相同的值。如果在list
中没有与参数相等的值,将产生ValueError
。
a = [10, 11, 10, 13, [12, 14]]
a.remove([12, 14])
a.remove(10)
5. index
的使用
index
方法有一个参数,并且必须与list
中至少一个值相同。她返回的list
中第一个与参数相等的值的下标。如果在list
中没有与参数相等的值,将产生ValueError
。
a = [13, 14, 13, 12, [13, 14], 15]
a.index([13, 14])
a.index(13)
6. count
的使用
count
方法有一个参数,返回在list
中与参数相同的值有几个。
a = [1, [2, 3], 1, [4, 5]]
a.count([2,3])
a.count(1)
a.count(5)
函数的默认参数
注意函数默认参数的使用,看代码:
def f(s=[]):
s.append(3)
return len(s)
f() # result is 1
f() # result is 2
f() # result is 3