python之列表
@
List(列表)简述
- 列表可以完成大多数集合类的数据结构实现
- 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(嵌套)
- 列表是写在方括号[]之间、用逗号分隔开的元素列表
- 列表索引值以0为开始值,-1为从末尾的开始位置。列表可以使用+操作符进行拼接,使用*表示重复
初试牛刀
list_1 = [] #定义一个空的列表
namelist = ["小张","小王","小李"]
print(namelist[0])#下标从0开始
for name in namelist: #可以使用for循环遍历
print(name)
print(len(namelist)) #可使用Len方法知道列表的长度
testlist = [1,"测试"] #可存放不同数据类型的元素
print(type(testlist[0]))
print(type(testlist[1]))
结果:
常用方法
进阶使用
#增---append()、extend()
'''
namelist = ["小张","小王","小李"]
print("添加前的列表------")
for name in namelist:
print(name)
nameadd = input("添加一个学生:")
namelist.append(nameadd) # 使用append方法在末尾添加元素
print("添加后的列表------")
for name in namelist:
print(name)
'''
'''
a = [1,2]
b = [3,4]
a.append(b) #会把b列表当作整体,嵌套进a列表
print(a)
a.extend(b) # 把b列表拆散,把b列表的每一个元素逐一添加进a列表
print(a)
'''
'''
a = [0,1,2]
a.insert(1,3) # 第一个变量表示下标,第二个变量表示插入元素
print(a) # 指定下标位置插入元素
'''
#删---del、pop()、remove()
'''
movieName = ["花木兰","黄飞鸿","廉颇","赵云"]
del movieName[1] # 删除指定下标的元素
movieName.pop() # 弹出末尾最后一个元素,类似栈
movieName.remove("廉颇") # 直接删除指定内容的元素,但是如果列表中有重复元素,则只能删除第一个元素
for movie in movieName:
print(movie)
'''
'''
#改
namelist = ["小张","小王","小李"]
namelist[0] = "小红" #直接修改指定下标的元素
for name in namelist:
print(name)
'''
'''
#查: in、not in
findName = input("请输入你要查找的学生姓名:")
if findName in namelist:
print("找到此人")
else:
print("没有此人")
mylist = ["a","b","c","a","d"]
print(mylist.index("a",1,4)) #找到元素a在列表中下标1到4的中的下标位置,此例输出为3
# 范围区间是左闭右开
print(mylist.count("a")) #统计某个元素在列表中出现的次数
'''
# 排序和反转
'''
a = [1,2,3,4]
a.reverse() #将列表所有元素反转,并不是临时修改,而是永久改变
a.sort() # 升序排列
a.sort(reverse=True) # 降序排列
'''
利用列表的嵌套,把五个老师随机分配到三个办公室,并输出
import random
offices = [[],[],[]] # 三个空的嵌套列表,作为三个办公室
teachers = ["mr.张","mr.王","mr.李","mr.唐","mr.杨"] # 五个老师
# 使用随机数生成0,1,2代表三个办公室下标,每一个嵌套列表使用append追加一个元素
# 利用for循环遍历老师列表,使每一个老师都能随机分配到一个办公室
for teacher in teachers:
offices[random.randint(0,2)].append(teacher)
i=1#作为办公室计数器
for office in offices:
print("第%d办公室有%d个老师"%(i,office.__len__()))#此处列表的长度可用len(office)
i+=1
for teacher in office:
print(teacher,end="\t")
print("\n")
如果真的不知道做什么 那就做好眼前的事情吧 你所希望的事情都会慢慢实现...