一、数组(list)
7.1数组的知识
上面案例的问题
重复 类代的代码很多
如果有10个学生、一百个学生。。。
数学中的数组(数列)
X = A1+A2+A3
程序中也有数组
A[1]
7.2变量的本质
变量的本质,就是一个储存空间,是一个地址
一个宿舍
数组的本质,一段连续的内存空间
一层宿舍,每个房间有编号[从0开始的]
7.3定义与基本使用
#(1)定义
list = [] #定义一个空列表
listName = ["张三丰","王麻子","李四","李四"] #定义列表,储存了3个元素
##(2)获取列表中值
print("获取列表中第一个值:%s"%(listName[0]))
##(3)获取索引(下标)
print("李四的索引(下标):%s"%(listName.index("李四")))#若果有多个,找第一个
#ValueError:'李阳' is not in list,找不到会报错
#print("李阳的索引(下标):%s"%(listName.index("李阳")))
##(4)修改 列表中的值
listName[3] = "李阳"
print("李阳的索引(下标):%s"%(listName.index("李阳")))
##(5) 添加
###5.1 append在尾部添加
listName.append("隔壁老王")
print(listName)
##5.2insert 添加 inert(索引,需要插入的值)
listName.insert(1,"小姐姐")
print(listName)
###5.3 extend扩展,A.exrend(B,将B列表中元素放到A的后面
list2 = ["猴哥","八戒","沙僧"]
listName.extend(list2)
print(listName)
##(6)删除
###6.1remove:删除列表中具体的值
listName.remove("八戒")
print(listName)
###6.2 pop(),把尾部元素删除
listName.pop()
print(listName)
###6.3 pop(2),指定 索引 的删除
listName.pop(2)
print(listName)
###6.4清空
# listName.clear()
# print(listName)
##(7) 列表的长度(元素的个数)
print("统计 小姐姐 的个数%d" % (listName.count("小姐姐")))
print("统计 列表 长度%d" % (len(listName)))
##(8) 删除 del,清空内存空间
print(listName)
del listName[1]
print(listName)
a = 18
del a
7.4列表的遍历(一个一个)
listName = ["张三丰","李四","李子明","炼铜"]
#遍历列表中所有元素
print("*"*20)
for i in listName:
print(i)
print("*"*20)
##通过 下标(索引)获取值
for i in range(0,len(listName)):
print("第%d -> %s"%(i,listName[i]))
7.5数组的利用(面试问得多)
7.5.1元素的互换
a = input("请输入a:")
b = input("请输入b:")
print("a = %s;b = %s"%(a,b))
c = a #先将 a 临时放入 c
a = b ##再把 b 放到 a的位置
b = c ###从c中 把 a 放到 b的位置
print("a = %s;b = %s"%(a,b))
7.5.2冒泡排序法
7.5.3选择排序
"""
选择排序
原始: 22、11、33、66、88、44、55
第一趟:找出最大值88,下标5。从[1,6]中找;最后一个下标 6
22,11,33,66,55,44,88
第二趟:找出最大值88,下标5。从[1,6]中找;最后一个下标 6
22,11,33,44,55,66,88
第三趟:找出最大值88,下标5。从[1,6]中找;最后一个下标 6
22,11,33,44,55,66,88
第四趟:找出最大值88,下标5。从[1,6]中找;最后一个下标 6
22,11,33,44,55,66,88
第五趟:找出最大值88,下标5。从[1,6]中找;最后一个下标 6
11,22,33,44,55,66,88
最多换位置:n-1
"""
list = [22,11,33,66,88,44,55]
for i in range(0, len(list)):##循环次数
#找出最大值
t = list[0]#假设第一个最大
index = 0##最大值的索引
for j in range(1, len(list)-i):
if list[j] > t:
t = list[j]
index = j
##把最大值放到最后面
last = len(list)-1-i ##最后一个值的下标
list[index] = list[last]
list[last] = t
print(list)