栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

列表的处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

列表的处理

格式=[元素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 range
remove()
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')
列表推导式
  • 本质上可以把列表 推导式理解成一种集合了转换和筛选功能的函数,通过这个函数把一个列表转换成另一个列表。之一是另一个新的列表,原列表保持不变。
  1. 列表推导
    [表达式 for 变量 in 列表]
  2. 列表嵌套推导
    [表达式 for 变量 in 列表1 for 变量2 in 列表2]
  3. 条件列表推导
    [表达式 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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号