Python组合数据类型 之 列表

列表类型

  • 列表(list)是有序的元素集合;
  • 列表的所有元素放在一对方括号[]中,相邻元素之间使用逗号分隔;
  • 同一个列表中元素的数据类型可以各不相同;
    [10,20,30,40]
    [‘spam’,2.0,5,[10,20]]
    [{3},{5:6},(1,2,3)]
  • 列表元素可以通过索引访问单个元素;
  • 使用"="直接将一个列表赋值给变量即可创建列表对象。

列表操作

  • 针对列表有一些基本操作,这些操作与字符串操作类似
列表操作符操作符含义
< list1 >+< list2 >连接两个列表
< list >*<整数类型>对列表进行整数次重复
< list >[<整数类型>]索引列表中的元素
len(< seq >)列表中元素的个数
< list >[<整数类型>:<整数类型>]取列表的一个子序列
for< var > in < list >:对列表进行循环列举
< expr > in < list >成员检查,判断< expr >是否在列表中
>>>vlist=[0,1,2,3,4]
>>>vlist*2
[0,1,2,3,4,0,1,2,3,4]
>>>len(vlist[2:])
3
>>>for i in vlist[:3]:
		print(i)
0
1
2
 >>>2 in vlist
True  		

列表相关方法

方法说明
append(x)将x追加至列表尾部
extend(L)将列表L中所有元素追加至列表尾部
insert(index,x)在列表index位置处插入x,该位置后面的所有元素后移,如果index为正数且大于列表长度则在列表尾部追加x
remove(x)在列表中删除第一个值为x的元素,该元素之后所有元素前移并且索引减1,如果列表中不存在x则抛出异常
clear()清空列表,删除列表中所有元素,保留列表对象
index(x)返回列表中第一个值为x的元素的索引,若不存在值为x的元素则抛出异常
count(x)返回x在列表中出现的次数
reverse()对列表所有元素进行原地逆序,首尾交换
sort(key=None,reverse=False)对列表中的元素进行原地排序,key用来指定排序规则,reverse为False表示升序,Ture表示降序
  • 追加append()
    append()方法可以实现在列表末尾添加新元素
    它的格式为:list.append(obj)
>>>ls2=[1,2,3]
>>>ls2.append('abc')
>>>ls2
[1,2,3,'abc']
>>>ls2.append(['a',3.14])
>>>ls2
[1,2,3,'abc',['a',3.14]]
#注意:被追加的元素在列表中保持着原结构类型,而且一次只能追加一个元素
  • extend()
    extend()方法可以实现将指定的元素列表添加到已存在列表的末尾
    它的格式为:list.extend(seq)
    其中,参数seq表示需要添加的元素列表,可以是任何可迭代元素(主要指字符串、列表、元组、字典类型的数据)
>>>ls3=[1,2,3,4]
>>>ls3.extend([5,'abc'])
>>>ls3
[1,2,3,4,5,'abc']
>>>ls3.extend('python')
>>>ls3
[1,2,3,4,5,'abc','p','y','t','h','o','n']
#注意:extend()方法是将列表中的元素分解后添加至原列表内,相当于扩展了原列表,实现效果类似字符串的连接操作
  • 插入insert()
    insert()方法可以实现将指定新元素插入到列表中的指定位置
    它的格式为:list.insert(index,obj)
    其中,index表示新元素需要插入的索引值,
    obj表示要插入列表中的新元素,可以是任意类型的数据
>>>ls4=['data',123,10.5]
>>>ls4.insert(0,2020)
>>>ls4
[2020,'data',123,10.5]
>>>ls4.insert(2,['python',12])
>>>ls4
[2020,'data',['python',12],123,10.5]
  • 删除remove()和clear()
>>>colors=['red','bule','green','purple','bule']
>>>colors.remove('bule')    #删除元素值为'bule'的第一个匹配项
>>>colors
['red','green','purple','bule']
>>>colors.clear()    #清空列表colors中的所有元素
>>>colors
[]

remove()方法只会删除第一个指定的值。如果需要删除多个指定的值,那么就需要使用循环来实现。

  • 删除并取出pop()
#pop()--取出并将取出的值赋给另外一个变量
name=["xiaowu","litte-five","James"]
special_name=name.pop(1)
print(name)
print(special_name)
#输出为:['xiaowu',James']
#    little-five
  • 修改操作—索引和切片的方法
>>>mlist=[1,2,3,4,5]
>>>mlist='python'    #修改索引3的元素值和类型
>>>mlist
[1,2,3,'python',5]    #修改后的列表内容
>>>mlist[1:3]=['funny',3.14]
>>>mlist
[1,'funny',3.14,'python',5]

#遵循"多增少减"的原则
>>>mlist[1:3]=['more',2.56,'new']
>>>mlist
[1,'more',2.56,'new','python',5]
>>>mlist[1:3]=['fewer']
>>>mlist
[1,'fewer','new','python',5]
#列表元素减少,值为2.56的元素被删除了
  • 排序sorted
    默认正序,加入reverse=Ture,则表示倒序
#正序
num=[11,55,88,66,35,42]
print(sorted(num))    #=>数字排序
#输出为:[11,35,42,55,66,88]

#倒序num列表内容没排序
print(sorted(num,reverse=Ture))
#输出为:[88,66,55,42,35,11]
>>>num.sort(reverse=Ture)
>>>num    #num列表内容排序了
[88,66,55,42,35,11]

列表相关方法实例

已知某班某门课程期末考试学生人数和按学号排列的成绩,完成成绩输入,修改,插入,删除,查询,求平均值,排序等基本操作。

  • (1) 学生成绩输入
#定义输入学生人数和输入每个同学成绩函数
def getscore():
	n=int(input("请输入学生人数:"))    #学生人数转换为整数
	score=[]	#定义列表
	for i in range(n):
		x=int(input('输入学生成绩:'))    #输入一个学生成绩
		score.append(x)    #在列表score的末尾附加x元素
	return score    #返回成绩列表
getscore()
#调用该函数运行结果:
#请输入学生人数:3
#输入学生成绩:60
#输入学生成绩:90
#输入学生成绩:70
  • (2) 输出列表中数据
    定义函数,输入参数为列表类型数据,输出列表中每位同学所在序号及考试成绩
def printscore(scores):    #输出每个同学序号及成绩函数
	for i in range(len(scores))
		print("序号:{} 成绩:{}".format(i+1,scores[i])
  • (3) 计算平均成绩
def avgscore(scores):	#定义平均成绩函数
	s=0.0
	for x in scores:	#对列表中每个数遍历加和到s中
		s=s+x
	return s/len(score)
#或
def avgscore(score):	#定义平均成绩函数
	#sum(scores)返回列表中所有元素之和
	return sum(scores)/len(scores)
  • (4) 插入某个学生成绩、修改、删除某个学生成绩
#在第3个同学成绩前插入一个学生成绩85
x=85
i=2
scores.insert(i,x)

#将第3个同学成绩改为95
x=95
i=2
scores[i]=x	#将列表scores的i位置的值改为x

#将成绩为95的同学删除
x=95
score.remove(x)    #在列表scores删除值为x的元素
printscore(scores)    #调用函数输出每个同学序号及成绩
  • (5) 求该课程成绩的平均分、最高分和最低分
#调用函数输入学生人数和每个同学成绩
scores=getscore()
avg=avgscore(scores)    #调用平均成绩函数
print("AVG={},MAX={},MIN=:{}".format(avg,max(scores),min(scores))    #输入平均分、最高分和最低分
#代码解析:
#max(scores)	返回列表中最大的元素
#min(scores)	返回列表中最小的元素
  • (6) 查找某成绩所在序号
scores=getscore()	#输入学生人数和每个同学成绩
printscore(scores)    #输出每个同学序号及成绩
x=85
i=score.index(x)    #返回x在scores列表中第一次出现的下标
print("序号:{} 成绩:{}".format(i+1,scores[i])
  • (7) 该课成绩排序
scores=getscore()    #调用函数输入学生和每个同学成绩
printscore(scores)    #调用函数输出每个同学序号及成绩
print(sorted(scores))    #按升序输出scores中元素
scores.sort(reverse=Ture)    #对scores中元素按降序排序
printscore(scores)
  • (8) 将2个班该课成绩合并,然后进行分析
scores1=getscore()    #输入1班学生人数和每个同学成绩
printscore(scores1)    #输出1班每个同学序号及成绩
scores2=getscore()
scores1.extend(scores2)    #在列表scores1的末尾添加列表scores2所有元素
#score1+=score2    与上行功能相同
printscore(score1)    #输出2个班每个同学序号及成绩

嵌套列表

#存放了5户居民一年的用水数据
>>>L7=[['黄晓明','东川路156弄3号504室','0000359222',772,789,806,847,880,901,950,991,1022,1043,1064,1089,1114],
['李红','东川路156弄3号101室','0000359201',121,132,145,156,168,179,192,206,219,,230,246,258,273],
['钱多多','东川路156弄3号102室','0000359202',1008,1046,1102,1167,1209,1255,1311,1362,1407,1453,1512,1563,1604],
['赵志荣','东川路156弄3号103室','0000359203',541,567,590,,622,651,689,701,732,758,775,796,814,847],
['秦天君','东川路156弄3号104室','0000359204',401,412,441,466,479,508,522,541,572,603,637,666]]
>>>L7[0]
['黄晓明','东川路156弄3号504室','0000359222',772,789,806,847,880,901,950,991,1022,1043,1064,1089,1114]
>>>L7[0][0:2]
['黄晓明','东川路156弄3号504室']
>>for i in range(len(L7)):
      print(L7[i][0])
黄晓明
李红
钱多多
赵志荣
秦天君
>>>L7[2][0]
'钱多多'

知识点整理不易,如果对你有帮助,给个免费的赞支持一下吧!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张同学啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值