6x00 Python序列的种类和使用

6x10 序列(sequence)概述

  • 序列为Python中最基本的一种数据结构,用于保存一组有序的数据,所有数据在序列中都有一个唯一的位置(索引),并且序列中的数据会按照添加的顺序来分配索引
  • 数据结构指计算机中 数据存储的方式
  • 序列乃是一块用于存放多个值的连续内存空间,并按一定顺序排列,每个值(称为元素)都分配一个数字编号(由0开始),称为 索引或位置(indexing)
  • 序列结构主要有字符串,元组,列表,集合和字典

6x11 序列的分类

序列的分类:

  • 序列结构主要有 字符串,元组,列表,集合和字典
  • 可变序列(当中元素可以改变)列表(list),字典(dict)
  • 不可变序列(元素不可改变) : 字符串(str),元组(tuple)

6x11 序列的一般操作

序列结构有以下几个通用的操作:

  • 索引
  • 切片
  • 序列相加,相乘
  • 检查某元素是否序列成员(元素)
  • 计算长度,最大和最小值… 等等

eg. table = [‘我’,‘是’,‘程’,‘序’,‘员’,‘梁’,‘山’,‘伯’]
eg. next = [6, 4, 3]

操作举例注意结果
索引table[4]索引为0开始
切片table[1:5:2]切片由索引1开始到4,不包含5,步长为2[’是‘,‘序’,‘梁’,‘伯’]
序列相加table + next元素可以不同,但序列类型必须一样[‘我’,‘是’,‘程’,‘序’,‘员’,‘梁’,‘山’,‘伯’,6,4,3]
序列乘法next*3必须乘于整数[6, 4, 3, 6, 4, 3, 6, 4, 3]
检查是否成员4 in next, '太‘ not in table判断真假True, True
计算长度len(table)计算元素数量8
找最大值max(next)找元素中最大值6
找最小值min(next)找元素中最小值3

其他内置函数及其说明:

函数说明
list()将序列转为列表
str()将序列转为字符串
sum(iterable[, start])计算元素总和, iterable为列表,可选从start开始
sort(key=None, reverse=False)对元素进行排序,将改变本来序列,key为要找的对象值相对的链,reverse如果设为True即反向排序
sorted(iterable, key=None, reverse=False)对元素进行排序, 将排好的赋值一次,不改变本来序列
reversed()将序列元素反向排序
enumerate()组合成一个索引序列,多用在for循环中
list.index(obj[, start[, end]])获取指定obj元素在切片元素位置里列表中的位置, 如果没有切片位置则返回第一个的索引值
list.count(obj)查找指定元素在列表中出现的次数

6x20 列表(list)

  • 列表是Python中一个对象,以中挂号[]表示,元素以英文逗号","隔开
    列表的元素可以任何类型, 不过放入同一类型元素可以提高程序的可读性
  • 列表的作用:
    • 列表中可以保存多个有序数据
    • 列表是用来存储对象的对象
table = [1, 0.4,'我',['人生苦短','我用Python'],'''简单''',"开心", None]

6x21 创建列表

6x21a 创建空列表

table = []

直接以空[],或有元素的列表赋值给变量来创建列表

6x21b 创建数值列表

#语法:range(start,stop,step)
#start=开始数,stop=结束数(不包含),step=步长,间隔
list(range(10,20,2))  #创建列表:[10,12,14,16,18]

6x22 添加,修改或删除列表

  • 切片方式给内容重新赋值,赋值内容必须是序列
  • 如果设置了步长,序列中元素的个数必须与切片中元素的个数保持一致
  • 添加元素:
    • list1.append(“人生苦短”) #将"人生苦短"导入list1最后一个元素
    • list1.insert(2, “Python”) #将"Python"插入索引2的位置,本来索引2位置的元素后移至索引3;方法的第一个参数为索引,第二个参数为要插入的元素
    • list.extend(seq) #将一个列表中全部元素添加到另一个列表中,将seq添加到list中
  • 通过切片删除元素:
    • del list[start : end] #以冒号隔开
    • del list[-1] #以索引删除指定元素, 多用于根据索引删除
    • list[] #删除所有内容
    • list.pop() #根据索引删除并返回指定元素 (有返回值)
    • list.remove(“Java”) #删除指定元素(如果相同值元素有多个,只删除第一个,多用于不确定位置的元素值删除)

6x23 访问列表元素

table = ['我','是','程','序','员',['是','梁','山','伯']]
print(table)
#访问索引5元素(另一个列表)里的索引1元素
print(table[5][1]) 
结果:
['我', '是', '程', '序', '员', ['是', '梁', '山', '伯']]

6x24 遍历列表

table = ['我','是','程','序','员',['是','梁','山','伯']]
for i in table:
    print(i)

#遍历列表输出索引值和相对元素内容
for index,value in enumerate(table):
    print(index,value)
结果:
我
是
程
序
员
['是', '梁', '山', '伯']
0 我
1 是
2 程
3 序
4 员
5 ['是', '梁', '山', '伯']

range()函数:

6x25 对列表进行统计计算

table = ['我','是','程','序','员','是','梁','山','伯']
time = table.count('是')  #"是"出现的次数
print(time)
结果:
2
table = ['我','是','程','序','员','是','梁','山','伯']
time = table.index('是')  #"是"第一次出现的索引位置
print(time)
结果:
1	#索引位置
table = (6,4,2,7,9,1,5,9)
total = sum(table, 100) #设定开始累算前值为100
print(total)
结果:
143	  #把列表累加43后加上开始数100

6x26 对列表进行排序

# key输入比较键 eg.key=str.lower 表示不区分大小写
# 默认区分大小写
list.sort(key=None, reverse=False)
table = ['我','是','程','序','员','是','梁','山','伯']
table1 = [6,4,2,7,9,1,5,9]
table.sort()
table1.sort()
print(table)
print(table1)
结果:
['伯', '员', '山', '序', '我', '是', '是', '梁', '程']
[1, 2, 4, 5, 6, 7, 9, 9]
table = ['我','是','程','序','员','是','梁','山','伯']
table1 = [6,4,2,7,9,1,5,9]
a = sorted(table)  #排序列表赋值a
b = sorted(table1)  #排序列表1赋值b
print(a)
print(b)
print(table)  #检查本来列表是否改变
print(table1)   #检查列表1是否改变
结果:
['伯', '员', '山', '序', '我', '是', '是', '梁', '程']
[1, 2, 4, 5, 6, 7, 9, 9]
['我', '是', '程', '序', '员', '是', '梁', '山', '伯']
[6, 4, 2, 7, 9, 1, 5, 9]

6x27 列表推导式

  • list = [表达式 for x in range]
    list = 生成的列表
    表达式 = 计算新列表的元素
    x = 循环变量
    range = 采用range()函数生成的range对象
price = [250,430,162,2100,888]
sale = [int(x*0.5)for x in price]
print('原价:', price)
print('折扣50%价:', sale)
结果:
原价: [250, 430, 162, 2100, 888]
折扣50%价: [125, 215, 81, 1050, 444]

<<< 5x00 Python条件控制语句的用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值