格式=[元素0,元素1,元素2,元素3,元素4···]
l1 = [1, 2, 3]
l2 = [[1, 2], [3, 4], [5], [6]] # 列表的嵌套
print(l1)
print(l2)
l3 = [10, 20, 30, 'c', 'c', 'd']
for i in l3: # 列表的循环
print(i)
'''
[1, 2, 3]
[[1, 2], [3, 4], [5], [6]]
10
20
30
c
c
d
'''
l4=[] # 空列表
print(l4)
#返回值:[]
列表的切片
[satrt:end:step]
- start 起始索引,从0开始,-1表示结束
- end 结束索引
- step 步长,步长为正时,从左向右取值;步长为负时,从右往左取值。
- 【注意】切片的结果不包含结束索引,即不包含最后的一位,-1代表列表的最后一个位置索引。
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] print(l[2:6]) # ['c', 'd', 'e', 'f'] print(l[:6]) # ['a', 'b', 'c', 'd', 'e', 'f'] print(l[2:]) # ['c', 'd', 'e', 'f', 'g'] print(l[-5:-2]) # ['c', 'd', 'e'] print(l[2:-1]) # ['c', 'd', 'e', 'f'] print(l[-6:6]) # 负数从右往左,正数从左往右,返回值:['b', 'c', 'd', 'e', 'f'] print(l[-2:2]) # 无交集,返回值:[] print(l[:]) # 默认提取所有:['a', 'b', 'c', 'd', 'e', 'f', 'g'] print(l[::1]) # ['a', 'b', 'c', 'd', 'e', 'f', 'g'] print(l[::2]) # ['a', 'c', 'e', 'g'] print(l[::3]) # ['a', 'd', 'g'] print(l[::6]) # ['a', 'g'] print(l[1::2]) # 从索引1开始取值到结束,步长为2,返回值:['b', 'd', 'f'] print(l[1:-2:2]) # ['b', 'd'] print(l[:3:-2]) # 步数为负值,取值起点右侧开始,结束位置从左往右到d结束(不算d),步数为2,方向从右往左,返回值:['g', 'e'] print(l[:4:-2]) # ['g'] print(l[:1:-2]) # ['g', 'e', 'c'] print(l[-1:3:-1]) # ['g', 'f', 'e']列表的元素修改
l = ['a-小宝', 'b-宝子', 'c-宝宝', 'd-公仔', 'e-猪猪', 'f-露露', 'g-小可爱'] print(l) l[2]='我是小可爱' print(l) ''' ['a-小宝', 'b-宝子', 'c-宝宝', 'd-公仔', 'e-猪猪', 'f-露露', 'g-小可爱'] ['a-小宝', 'b-宝子', '我是小可爱', 'd-公仔', 'e-猪猪', 'f-露露', 'g-小可爱'] '''列表元素的增加 extend() ; append() ; insert()
l = ['小可爱']
l = ['露露是'] + l # '+'添加
l = l + ['宝宝']
l += ['不可爱']
print(l)
l.append('是憨憨') # append添加,默认添加至最后
print(l)
l.insert(4, '宝子') # 指定位置嵌入
print(l)
'''
['露露是', '小可爱', '宝宝', '不可爱']
['露露是', '小可爱', '宝宝', '不可爱', '是憨憨']
['露露是', '小可爱', '宝宝', '不可爱', '宝子', '是憨憨']
'''
l0 = [11, 22, 33, 44, 55, 66, 77, 99]
l0[1]=100
l0.append([45,67]) # 直接把括号的内容增加进列表中
l0.insert(1,34)
l0.extend([45,67]) # 从列表中提取元素增加进列表中
print(l0)
# [11, 34, 100, 33, 44, 55, 66, 77, 99, [45, 67], 45, 67]
列表元素的删除
pop()
l = ['露露是', '小可爱', '宝宝', '不可爱', '宝子', '是憨憨'] l.pop() # 没有指定,默认删除最后一个c print(l) # ['露露是', '小可爱', '宝宝', '不可爱', '宝子'] l.pop(0) # 按指定索引删除 print(l) # ['小可爱', '宝宝', '不可爱', '宝子'] l.pop(6) print(l) # 没有该元素时报错,IndexError: pop index out of rangeremove()
l = ['露露是', '小可爱', '宝宝', '不可爱', '宝子', '是憨憨']
l.remove('宝宝') # ['露露是', '小可爱', '不可爱', '宝子', '是憨憨']
print(l)
del
l = ['露露是', '小可爱', '宝宝', '不可爱', '宝子', '是憨憨'] del l[-2] print(l) # ['露露是', '小可爱', '宝宝', '不可爱', '是憨憨']clear 清空
l = ['露露是', '小可爱', '宝宝', '不可爱', '宝子', '是憨憨'] l.clear() print(l) # []实例
ws = wb.sheet_by_name('成绩') # 读取工作表
nwb = copy(wb) # 复制工作簿
nws = nwb.get_sheet('成绩') # 新建/读取工作表
n, subtotal = 0, 0
while n < ws.nrows - 1: # 循环行号
n += 1 # 累加数字
l = ws.cell_value(n, 1).split('-')[1::2] # 拆分提取分数,split拆分字符串;步长2
for i in l: # 循环分数列表
subtotal += int(i) # 字符串转换为整数;累加分数
nws.write(n, 0, ws.cell_value(n, 0)) # 将姓名写入A列单元格
nws.write(n, 1, subtotal) # 将姓名写入B列单元格
subtotal = 0 # 再次初始化变量
nwb.save('新成绩统计表.xls')
操作符
- 列表操作符有组合(+)、重复(*)、元素是否存在于列表中(in)
print([1, 2, 3] + [50, 20]) # [1, 2, 3, 50, 20] print([1, 2, 3] * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3] print(1 in [1, 2, 3]) # True print(6 in [1, 2, 3]) # False
- (*)对于数字来说是乘,对于字符串和列表来说是重复的意思
实例:判断指定姓名在指定日期是否值班
import xlrd
from xlutils.copy import copy
wb = xlrd.open_workbook('值班表.xls')
ws = wb.sheet_by_name('值班表')
nwb = copy(wb)
nws = nwb.get_sheet('值班表')
r = 0
while r < ws, nrows-1:
r += 1
row = ws.row_values(r) # 读取要判断的行列表
if '憨憨' in row:
nws.write(r, 6, '√')
else:
nws.write(r, 6, '×')
nwb.save('值班表.xls')
列表推导式
- 本质上可以把列表 推导式理解成一种集合了转换和筛选功能的函数,通过这个函数把一个列表转换成另一个列表。之一是另一个新的列表,原列表保持不变。
- 列表推导
[表达式 for 变量 in 列表] - 列表嵌套推导
[表达式 for 变量 in 列表1 for 变量2 in 列表2] - 条件列表推导
[表达式 for 变量 in 列表 if 条件]
列表推导
l = ['83', '98', '91', '100'] l2 = [x for x in l] print(l2) # ['83', '98', '91', '100'] print([int(x) for x in l]) # [83, 98, 91, 100]
列表嵌套推导
l0 = [[1, 2, 3, 0], [4, 5, 6, 0], [9, 8, 7, 0]] l1 = [l for l in l0] print(l1) # [[1, 2, 3, 0], [4, 5, 6, 0], [9, 8, 7, 0]] 没变化 l2 = [l for l in l0 for x in l] print(l2) #[[1, 2, 3, 0], [1, 2, 3, 0], [1, 2, 3, 0], [1, 2, 3, 0], [4, 5, 6, 0], [4, 5, 6, 0], [4, 5, 6, 0], [4, 5, 6, 0], [9, 8, 7, 0], [9, 8, 7, 0], [9, 8, 7, 0], [9, 8, 7, 0]] #将l转变为x:重复四遍,因为l0每个元素里有四个参数 l3 = [x for l in l0 for x in l] print(l3) # [1, 2, 3, 0, 4, 5, 6, 0, 9, 8, 7, 0] l4 = [[x for x in l] for l in l0] print(l4) # [[1, 2, 3, 0], [4, 5, 6, 0], [9, 8, 7, 0]] 没变化 l5 = [[x + 10 for x in l] for l in l0] print(l5) # [[11, 12, 13, 10], [14, 15, 16, 10], [19, 18, 17, 10]] 每个参数均+10



