10.1列表就是序列
10.2列表是可变的
10.3遍历列表
#若需要写或更新元素,需要通过下标访问,一个常用的方法是结合range和len函数 num = [1,2,3,4,5] for i in range(len(num)): num[i] = num[i] * 2 print(num) #对于一个看Jon个列表的for循环将不会执行循环的主体 for x in empty: print('this never happens')
10.4lists operations
+是连接操作;*是给定次数重复列表
10.5lists slices
10.6lists methods
append添加至列表尾部,extend添加一个列表至列表尾部;sort从小到大排序
10.7map,filter and reduce
def capitalize_all(t): res = [] for i in t: res.append(s.capitalize()) return res
def only_upper(t): res = [] for i in t: if s.isupper(): res.append(s) return res
10.8 deleting elements
pop修改列表,,并返回被删除的元素。如果不提供下表,将删除最后一个元素。
如果不需要被删除的值,可以用del。
如果知道要删除的元素(但不知道下标),可以使用remove,remove的返回值是None
10.9lists and string
list函数将字符串分割成单独的字符,如果要将字符串分割成单词,可以使用split方法。一个可选的参数称为分隔符,指定了什么字符作为分界线。join功能与split相反,将一个列表字符串连接起来。
10.10objects and values
>>> a = 'banana' >>> b = 'banana' >>> a is b True >>> a = [1,2,3] >>> b = [1,2,3] >>> a is b False >>> #字符串 a跟b是相同的;列表a跟b是相等的,但是是不同的
10.11 aliasing (别名)
>>> a = [1,2,3] >>> b = a >>> b is a True >>> b[0] = 11 >>> print(a) [11, 2, 3] >>> #一个变量和一公分对象的关联称为引用,这这个例子中,同一个对象有两个引用。如果一个对象有多于一个引用,我们称这个对象是有别名的。有别名的对象是可以改变的,对一个别名的改变会影响另一个。所以应该尽量避免这种情况。
10.12list arguments
>>> t1 = [1,2] >>> t2 = t1.append(3) >>> print(t1) [1, 2, 3] >>> print(t2) None >>> #append方法是修改一个列表 >>> t1 = [1,2] >>> t3 = t1 + [3] >>> print(t3) [1, 2, 3] >>> t2 is t3 False
>>> def bad_delete_head(t): t = t[1:] #wrong >>> #切片操作创建一个新的列表,并使t指向它。但这些操作对作为参数的列表没有影响 >>> #一个替代的写法是创建并返回一个新的列表。 >>> def tail(t): return t[1:] >>> #但这个函数并不修改原先的列表,下面给出如何使用这个函数 >>> letters = ['a','b','c'] >>> rest = tail(letters) >>> print (rest) ['b', 'c']
10.13debugging
有3点需要记住:
1.大多数的列表的方法对参数进行修改,然后返回None。字符串的方法则相反,他们保留原始的字符串并返回一个新的字符串
2.养成自己的编码习惯
3复制拷贝,避免别名