Python中的列表类似于C/C++语言中的数组。
列表的符号:[ ]
列表名 = [元素……]
功能:切片、增、删除、索引、复制、循环、包含
切片:原则(顾头、不顾尾)[a, b]è[a, b-1]
list = ["A", "B", "C", "D", "E"]
print(list)
print(list[1:3]) # 顾头不顾尾,取出下标为1至2的元素
print(list[0:3]) # 等价于print(list[:3])
print(list[-1]) # 反方向取第一个,输出E
print(list[-2:]) # 从倒数第二个开始取至最尾巴,输出D,E
print(list[-3:]) # 取得最后面的三个值,即从倒数第三个开始至最后,输出C,D,E
print(list[-3:-1]) # 取得[-3,-1-1]之间的下标的值;
print(list[0:-1:2]) # 参数分别是起始位置,终止位置,步长;等价于print(list[::2])
增
list = ["A", "B", "C", "D", "E"]
list.append("F") # 在尾部追加
list.insert(1, "Temp") # insert(index,object),即在原来是1的前面插入"Temp"
print(list)
extend:将一个列表加入到另一个列表的末尾,extend亦可用“+”号代替,效果等价于“+=”运算符;
lia = ['a', 'b']
lib = ['c', 'd']
lia.extend(lib)
print(lia) # 输出:['a','b','c','d']
删除
list = ["A", "B", "C", "D", "E"]
list.remove("C") # 没有返回值(即返回值为None);
del list[1] # 删除该下标的数,没有返回值;
list.pop() # 删除最后一个,返回删除的元素;
list.pop(1) # 删除该下标的数并返回刚刚删除的数;等价于:del list[1]
list.clear() # 清除全列表
索引
list = ["A", "B", "C", "D", "E"]
print(list.index("C")) # 返回被索引值的所在位置
print(list[list.index("C")])
复制
浅copy:第二个列表中的每个元素只是第一个列表中每个元素的引用!类似于快捷方式(软连接),现象是只复制第一层列表;
深复制:deepcopy,完完全全复制一个列表,占用独立的内存空间
listX = ["A", "B", "C", ["aa", "bb", "cc"], "D", "E" ] # 列表中的列表,多层列表
# 浅copy,三种方式实现
La = copy.copy(listX)
Lb = listX[:] # 切片的方式实现copy
Lc = list(listX)
# 浅copy应用举例:一对夫妻有同一银行账号,名字是不同的,然而存款却是不变的
person = ["name", ["CardNumber", 100]] # 第一层是名字,第二层是账号和存款;
personA = person[:]
personB = person[:]
personA[0] = "husband"
personB[0] = "wife"
personA[1][1] -= 50 # 丈夫用了50元,那么卡上的总共余额就只有100-50元,则夫妻两个对钱的查询余额都是100-50元;
print(personA) # 输出['husband', ['CardNumber', 50]]
print(personB) # 输出['wife', ['CardNumber', 50]]
//循环
list = ["A", "B", "C", "D", "E"]
for i in list: # 连续打印
print(i)
//包含
list = ["A", "B", "C", "D", "D", "E"]
print(list.count("D")) # 输出 2
操作方法函数
list = ["A", "B", "C", "D", "E"]
list.reverse() # 反转
list.sort() # 默认按照ASCII码表的顺序排序,参数:self,key,reverse
# 不同类型的数据类型不可放在一个列表排序
listEx = [1, 2]
list.extend(listEx) # 合并列表,print(list.extend(listEx)) 这样并不能显示list列表;
print(list)
list.count(“参数”) 统计参数出现在列表中的次数;
len(list) 返回列表名为list的长度
列表1+列表2 功能类似于extend,合并两个列表与列表1中;
max(列表) 返回该列表的最大值
min(列表) 返回该列表的最小值
列表生成式
即,使用“list”或“[ ]”快速生成一个列表;
语法:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
list(range(1,11)) # 使用list直接生成列表:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
L = []
for x in range(1,11): # 生成[1x1, 2x2, 3x3, ..., 10x10]
L.append(x * x)
print(L) # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
list_a = [x * x for x in range(1, 11)] # 上面的循环太过繁琐,列表生成式则可以用一行语句代替循环
print(list_a) # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。
高级应用:
# for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方,仅限于list;
print([x * x for x in range(1, 11) if x % 2 == 0]) # 只有满足x条件的才会被拿到x*x中去;
# 使用两层循环,可以生成全排列
print([m + n for m in 'ABC' for n in 'XYZ'])
# 打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(j,' * ',i,' = ',i*j,end=' ')
print()