1.1 掌握列表的基础概念
理解列表类型(list)
列表类型是一种数据集合,将集合中的元素按照先后顺序进行排序。Python的列表类型是用[]括号来表示,里面的元素用英文逗号隔开,列表里面可以包含任意元素的数据类型(num = ['abc',123,True,2.0])
列表的数据结构同字符串一样,都是线性结构,每个元素保存在相应的内存中,可以用索引调用这块内存。
例:num = ['abc',123,0.7,True] print(num[2])
# 0.7
遍历可迭代对象
简单数据类型都不可迭代(int float bool),对于可迭代的对象,可用for循环进行遍历
2.1 掌握列表的操作符
列表常用的操作符
[]:索引访问列表,可以给列表中指定元素赋值(相当于修改)例:num = [1,2,3] num[0] = 4 print(num[:]) # [4,2,3]
[:]:切片操作,和字符串的一样。返回一个新的列表。例:num = [1,2,3] print(num[0:2]) # [1,2]
+:列表的加法,合并两个列表的元素到一个新的列表。例:num1 = [1,2] num2 = [2,3] num = num1 + num2 # [1,2,2,3]
*:对列表进行重复输出,返回一个新的列表。例:num1 = [1,2] num = num1 * 2 # num = [1,2,1,2]
in:判断是否存在列表中。返回bool值。例:num1 = 4 num2 = [1,2,3] print(num1 in num2) # False
列表的关系运算:bool = list1 > list2。列表的关系运算是按序的,从第一个元素开始比较,根据元素的大小来决定True或False只有当两个列表相对应的值都一样,才会等于例如:num1 = [1,2] num2 = [1,3] print(num1>num2) # False
3.1 掌握列表的操作方法
列表常用的操作方法
list.append(object) :将object添加到list的尾部 。例:num = [0,1] num.append(2) print(num) # num = [0,1,2]
list.insert(index,object):将object添加到index位置,假如超出list的最大索引,则添加在尾部。例:num = [0,1] num.insert(0,2) # num = [2,1]
list.extend(可迭代对象):将可迭代对象逐个添加到list。例:num = [ ] num.extend('abc') # num = ['a','b','c']
list.index(object,[start,[stop]]):查找列表中object的位置,可以设定搜索区间,star为起始位置,stop为结束位置(不写则默认列表长度)。例:num = ['a','b','c'] print(num.index('a')) # 0 也可写成 print(num.index('a',0,2)
list.count(value):统计value在list中出现的次数。例:num = [1,1,1,2] print(num.count(1)) # 3
list.pop([index]):删除list中索引index对应的元素值。index默认最大索引值(最尾部)。例:num = [1,2] num.pop() # num=[1] 也可以这样写num.pop(1)
list.remove(value):删除list中的value。例:num = ['a','b'] num.remove('a') # num = ['b']
list.clear():一键清空list里的所有元素。例:num = [1,2,3] num.clear() # num = []
与列表有关的其他方法
len(list):返回列表中元素的数目。例:list = [1,2,3] print(len(list)) # 3
list.sort(key=True,reverse=False):如果不带任何参数,则原地升序排序。设置了reverse值为False,则降序排序。例:num = [1,2,6,5,4,3] print(num.sort()) # [1,2,3,4,5,6] 如果指定了reverse,num.sort(reverse = False) # [6,5,4,3,2,1]
str.join(list):如果list里全是字符串,则用str拼接所有元素为一个新的字符串。例:num = ['a','b','b'] print('h'.join(num)) # ahbhc
4.1 掌握列表的推导式
什么是列表推导式
由已有的可迭代对象,来生成一个新的列表(其实有点类似三元运算,简化for循环赋值)
上面代码用推导式表达为num = [_ for _ in range(5)]
语法:[element for element in 可迭代对象]
列表推导式的复杂结构
1.包含if的for循环列表推导式:
语法:[element if element in list if 表达式]
例子:
num = [ _ for _ in range(5) if _ % 2 == 0] # 生成一个0-4范围取偶数的列表,可看成以下代码
2.包含嵌套for循环的列表推导式:
语法:[element for x in 可迭代对象 for y in 可迭代对象]
例子:
num = [ x+y for x in [1,2,3] for y in [1,2,3]] # [2, 3, 4, 3, 4, 5, 4, 5, 6]
可转换成:
3.包含if的嵌套for循环的列表推导式:
语法:[element for x in list if 表达式 for y in list if 表达式]
例子:
num = [x+y for x in range(1,4) if x%2 != 0 for y in range(1,4) if y%2 == 0]
可转换成: