一、序列:是一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值
- 索引:从左到右的索引从0开始依次增加的正整数;从右到左的索引为-1开始的复数
- 切片(分片):一中获取序列中的元素的方法;
sname[start:end:step]--sname:序列名;start:起始值;end:结束值(不包括);step:步长
- 序列相加:两个序列可以相加(只能同类型序列:列表+列表,元组+元组,字符串+字符串),被加的序列排在原来的序列后面
- 乘法:序列的乘法实际上就是把一个序列中的元素复制几次
- 检查某个元素是否是序列的成员:print("姚明" (not) in nba)---判断姚明(不)在nba列表中
len也能计算字符串的长度
- 计算序列的长度:print("列表的长度为:"len(nba))---计算nba序列的长度
- 最大值:print(max(number))---返回序列中的最大值(只能用在序列中为数字型时)
- 最小值:prin(min(number))---返回序列中的最小值(只能用在序列中为数字型时)
list():把序列转换为列表(数字和字符串都能转换) str():序列转换为字符串
sum():计算序列中元素和 sorted():给序列中元素排序
reversed():反转序列中元素 enumerate():把序列组合为一个索引序列
二、列表:列表中可以放:整数,实数,布尔值,字符串,序列,对象
- 列表的创建和删除:一般不把不通类型的数据放在同一个列表中(提高可读性)
- 赋值运算符直接创建:listname = [元素1,元素2,…]---用英文状态的“,”隔开,元素数量无限制
- 创建空列表:a = []---创建一个名为a的空列表
- 创建数字列表:list(range(2,21,2))---2—21之间的偶数(数据全部都为数字)
- del listname------删除列表(很少用)
- 访问列表元素:获取列表中的内容
- print() 索引 切片
- 遍历列表:把列表中的元素全部预览一遍
- for循环实现:只能输出元素与的值
- for iten in listname: ---item用于保存获取到的元素,listname为列表名
- for循环和enumerate:即显示索引又显示元素
- for index,item in enumerate(listname): ---index用于保存索引,item用户保存获元素的值
- for循环实现:只能输出元素与的值
- 添加元素:+运算符添加(效率低)
- append:在元素列表末尾添加元素
- listname.append(obj) ---listname为被添加的列表名;obj为要添加的对象
- inert:用于在列表中间插入一个对象
- listname.inert(num,obj) ---num为要插入的位置的索引号;obj为要插入的对象
- extend:用于把一个列表添加到另一个列表的末尾
- listname.extend(seq) ---listname为原列表名,seq为被添加的列表
- append:在元素列表末尾添加元素
- 修改元素:只需要通过索引获取该元素,然后再为其重新赋值
- verser[2]="…" ---verser为列表名,2为要修改的元素的索引号
- 删除列表元素:
- 根据索引号删除:必须知道要删除的元素的索引号(索引号可为正数或负数)
- del verser[-1] ---删除verser列表中索引为-1的元素
- 根据元素值来删除:不确定其位置的元素(根据元素值来删除,最好先判断该元素是否在列表)
- if verser.count(value)>0 ---判断value元素是否在列表verser中
- verser.remove(value) ---删除verser列表中的value值
- if verser.count(value)>0 ---判断value元素是否在列表verser中
- 根据索引号删除:必须知道要删除的元素的索引号(索引号可为正数或负数)
- 对列表进行统计计算:
- count:获取指定元素在列表中出现的次数(精确匹配,不能只是元素的一部分)
- listname.count(obj) ---统计元素obj在列表listname中出现的次数
- index:获取指定元素在列表中首次出现的位置(索引)(被统计的元素只能精确匹配)
- listname.index(obj) ---统计obj在列表中首次出现的位置
- sum:统计数字列表的元素和
- sum(iterable,start) ---iterable为要计算的列表名,start为系统统计结果要加的值(默认为0)
- count:获取指定元素在列表中出现的次数(精确匹配,不能只是元素的一部分)
- 对列表进行排序:
- sort:对元素排序,排序后原列表中的元素顺序将发生改变
- listname.sort(key=None,reverse=False) ---key表示指定一个从每个元素中提取的一个比较键(key=str.lower表示在排序时不区分大小写);reverse为True表示降序,False为升序,默认为升
- sorted:排序后,源列表的元素顺序不变
- sorted(itemble,key=None,reverse=False) ---itemble表示要排序的列表名称
- sort:对元素排序,排序后原列表中的元素顺序将发生改变
三、列表推导式:可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表
生成指定范围的数字列表:list = [Expression for var range]
list = [i*i for i in range(2,11,2)] ---生成0-10的偶数的平方
list:生成列表的名称; expression:表达式,计算型列表的元素
var:循环变量 range:采用range()函数生成range对象
根据列表生成指定需求的列表:newlist = [expression for var in list]
price = [1200,5300,2988,6200,1998,8888]
sale = [int(x*0.5) for x in price]
print('原价格:',price)
从列表中选择符合条件的元素组成型列表:newlist = [expression for var in list if condition]
price = [1200,5330,2988,6200,1998,8888]
sele = [z for z in price if z >5000]
print('原列表:',price)
print("高于5000的:",sale)
condition:条件表达式,用于指定筛选的条件 四、二维列表的使用:二维列表就是包含列表的列表,一个列表的每个元素都是一个列表
直接定义二维列表:listname=[元素1,元素2…],[元素11,元素12…],[元素21,元素22…],…]
使用嵌套的for循环创建:
room = []
for i in range(1,5): #楼层
room.append([]) #添加一个空列表
for j in range(1,8): #每一层的房间数
room[i-1].append(i*1000+100+j)
print(room)
使用列表推导式创建:(能使用推导式尽量使用推导式)
eg:room=[[i*1000+100+j for j in range(1,8)] for i in range(1,5)]
print(room)
eg:
str1 = "千山鸟飞绝"
str2 = "万径人踪灭"
str3 = "孤舟蓑笠翁"
str4 = "独钓寒江雪"
list1 = [list(str1),list(str2),list(str3),list(str4)]
print("--横版输出--")
print()
for i in range(4): #循环的行数
for j in range(5): #循环每一行的字
if j == 4: #一行中的最后的一个字
print(list1[i][j]) #换行输出
else:
print(list1[i][j],end="") #不换行输出
print()
print()
print("--竖版--")
print()
list1.reverse() #排序(逆序)
for i in range(5): #循环每一行中的每一个
for j in range(4): #每一行
if j == 3:
print(list1[j][i]) #换行输出
else:
print(list1[j][i],end='')
posted on 2019-04-18 10:38 阅读( ...) 评论( ...)