数据结构:从计算机存储 组织数据的结构
列表(List) 元组(Tuple) 字典(Dictionary) 集合(Set)
一,列表(List):
1,基本 特点:
a,列表中的数据按顺序排列
b,列表有正序与倒序两种索引
c,列表可存储任意类型数据,且允许重复
如下图用示意图表示:
说明:当前列表包含了 7个元素,第一个列表在最左边 代表字符串 a 之后 b c.........,列表除了放置字符串外 还能放置数字;
可以存放任意类型数据,排列顺序是按照往列表中放置数据的顺序排列;在内存中 列表有一个简单的特点,每一个列 表中的元素都是紧密连接在一起的吗,没有任何缝隙,可遍历;
列表上下各有数字,被称为索引,检索数据的位置;第一个元素索引为0 第二个为1...........以此类推 递增(正序排列)
对于倒序排列 列表最后一个值是-1,以此向前递减;
2,列表的创建 :
变量名 = [元素1,元素2,.....]
list = ['a','b','c','1','2','3']
print(list)
list1 =[]#空列表
print(list1)
3,列表的取值:
#语法:变量 = 列表变量[索引值]
list =['三','四','五','六','七','八']
print(list)
liu = list[3]
print(liu)
#范围取值 列表变量 = 原列表变量[起始索引:结束索引]
#在Python 列表范围取值 是 包含左边数据 不包含右边数据
list1 = list[1:4]
print(list1)
#倒序
print(list1[-1])
#列表的index函数:用于获取列表索引值,返回出现第一次匹配元素的索引;
liu_index = list.index('六')
print(liu_index)
4,遍历列表 for循环:专门用于遍历列表,元组等数据结构
基本用法:
for 迭代变量 in 可迭代对象
循环体(必须缩进)
#列表遍历
list =['已','二','三','四','无','六']
#len()获取对应列表长度
count = len(list)
print(count)
i = 0
for num in list:
if num == '六':
ri = count * -1 + i # 六 的倒序索引
print(num,i,ri)
i += 1
while 循环遍历
list =['已','二','三','四','无','六']
#len()获取对应列表长度
count = len(list)
print(count)
i = 0
while i < len(list):
num = list[i]
if num == '六':
ri = count * -1 + i # 六 的倒序索引
print(num, i, ri)
i += 1
示例2:已知列表 存储1-10的元素,遍历循环输出列表中所有的偶数
numberList = [1,2,3,4,5,6,7,8,9,10]
i = 0
for n in numberList:
if n % 2 == 0:
m = int(i/2)+1 #输出第几个偶遇
print("第{}个偶数是{}".format(m,n))
i += 1
运行结果:
5,列表的反转与排序:
示例:
#reverse()用于反转列表
numberList.reverse();
print(numberList)
numberList2 = [11,12,13,14,1,2,3]
numberList2.sort()#排序升序
print(numberList2)
#代表降序排序
numberList2.sort(reverse=True)
print(numberList2)
运行结果:
6,列表的写操作:
新增 修改 删除
list.append() :在列表末端追加新元素
list.insert(索引值,新元素):在指定索引插入新元素
list[索引] = 新值 :更新指定索引位置数据
list[起始索引:结束索引] = 新列表:更新指定范围数据
list.remove(元素):删除指定元素
list.pop(索引):按索引删除指定元素
示例:
list = ['张三','李四','赵五']
#增加新元素
list.append("王六")
print(list)
#在指定索引插入新元素
list.insert(1,'哈哈')
print(list)
#更新指定索引位置数据
list[1] = '百度'
print(list)
#更新指定范围数据
list[1:4] = ['你好','我好','大家好']
print(list)
#删除指定元素
list.remove('大家好')
print(list)
#按索引删除指定元素
list.pop(3)
print(list)
运行结果:
列表其他操作:
#其他常用方法
list = ['张三','李四','赵六','赵五','赵六']
#统计出现次数
count = list.count('赵六')
print(count)
#追加操作
#append() 将整个列表追加到末尾
#extent() 将列表中的元素追加到原始列表末尾
list.extend(['杨八','无个'])
print(list)
#in 运算符用于判断数据是否在列表中存在,存在发挥True 不存在返回False
b = '张三' in list
print(b)
#copy函数 用于复制列表
list1 = list.copy()
print(list1)
#clear()清空列表
list.clear()
print(list)
示例:对列表去重 并降序排期
代码如下:
list1 = [23, 98, 56, 55, 76, 98, 55]
list2 =[]
for n in list1:
if n not in list2:
list2.append(n)
list2.sort(reverse=True)
print(list2)
运行结果:
7,嵌套列表:
示例1:
empList = [] #保存所有信息
while True:
info = input('请输入员工信息:')
if info == "":
print('程序结束')
break
infoList = info.split(',')
if len(infoList) != 3:
print('输入格式不正确')
continue
empList.append(infoList)
#print(empList)
for emp in empList:
print('姓名:{n},年龄:{a},工资:{s}'.format(n=emp[0],a=emp[1],s=emp[2]))
示例2:在终端输入月份,并判断该月份属于春,夏,秋,冬中的哪一个季节。
代码如下:
reason = [[3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 1, 2]]
month = input('请输入1-12月之间的月份:')
month = int(month)
if month in reason[0]:
print("{}月是春季".format(month))
elif month in reason[1]:
print("{}月夏季".format(month))
elif month in reason[2]:
print("{}月秋季".format(month))
elif month in reason[3]:
print("{}月冬季".format(month))
else:
print('您输入的月份有误!!')