3.8作业加总结

列表

1、什么是列表 (list)

列表是容器型数据类型;将中括号作为容器标准,里面多个数据用逗号隔开:[元素1,元素2,元素3,…]

特征:
1)列表是可变(可变指的是元素的个数可变;元素的值可变;元素的顺序可变)
2)列表是有序(每个元素都有一个表示元素在列表中位置的序号)
元素(容器中每个独立的数据就是元素):没有要求(任何类型的数据都行都可以作为列表的元素)

student=['张丁也','钟林君','程赟','陶皞']
print(student)

names=[  ]  # [] - 空列表 ,里面有空格也是空列表
print(names,bool(names))  #   False
list1=[12,3,4,'asx',12,True,[1,2]]
print(list1)

2.关于列表的操作:
查 – 获取元素
2、1查单个 – 获取列表中某一个元素
‘’’
语法:
列表[下标] - 获取列表中指定下标对应的元素

说明:
列表 - 任何结果是列表的表达式,例如:具体的一个列表值、保存列表的变量
[] - 固定写法
下标 - 又叫索引。它是元素在列表中的位置信息
取值方式一:从0开始依次增加,其中0是第一个元素,1是第二个元素
取值方式二:从-1开始依次减少,其中-1表示倒数第一个,-2表示倒数第二个…

names=['林俊杰','周杰伦','王力宏','陈奕迅','薛之谦','邓紫棋']
print(names[2]) # 王力宏
print(names[-2]) # 薛之谦
print(names[6])  #  报错  list index out of range
print(names[3]) # 陈奕迅
print([12,23][1]) # 23

2、2 切片(查部分) - 同时获取列表中的多个元素
原理:通过提供下标的范围来获取范围内的下标对应的元素
语法:
列表[开始下标:结束的下标:步长] - 从开始下标开始,依次下标值增加步长,取到结束下标前为止。

注意:
1) 结束下标对应值的元素一定取不到,开始的下标对应的元素可以取到
2) 如果步长为正,表示从前往后取,这个时候开始下标对应的位置必须在结束下标对应位置前,否则结果是[]
3) 如果步长为负,表示从后往前取,这个时候开始下标对应的位置必须在结束下标对应位置后,否则结果是[]

names=['林俊杰','周杰伦','王力宏','陈奕迅','薛之谦','邓紫棋']
print(names[1:4:1]) # ['周杰伦','王力宏','陈奕迅']
print(names[1:-1:1]) # ['周杰伦','王力宏','陈奕迅','薛之谦']
print(names[1:5:-1]) # []
print(names[1:4:2]) # ['周杰伦','陈奕迅']
print(names[-5:4:2]) # ['周杰伦','陈奕迅']
print(names[5:1:-3])  # ['邓紫棋','王力宏']
print(names[-1:1:-3]) # ['邓紫棋','王力宏']

  1. 省略步长 - 相当于步长为1
    列表[开始下标:结束下标]
names=['林俊杰','周杰伦','王力宏','陈奕迅','薛之谦','邓紫棋']
print(names[-5:3]) # ['周杰伦','王力宏']
print(names[4:-6]) # []

2)省略开始下标
列表 [:结束下标:步长] - 步长为正,从一个元素开始往后取。步长为负,从最后开始取
#列表 [:结束下标] - 从第一个元素开始往后取

heros=['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[:4:2]) #  ['后裔','诸葛亮']
print(heros[:2:-1]) # ['孙斌', '王昭君', '甄姬', '娜可露露']
print(heros[:-1]) # ['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君']

3)省略结束下标
列表[开始下标::步长] —— 步长为正,从开始下标取到最后个元素(往后取,取完为止);步长为负,从开始下标开始取到第一个元素为止
列表[开始下标:] - 从开始下标取到最后一个为止

heros=['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[1:]) # heros=['李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[2::-1]) # ['诸葛亮', '李元芳', '后裔']
print(heros[-1::-2]) # ['孙斌','甄姬','诸葛亮','后裔']

4)一起省
列表[::步长] - 整个列表
列表 [:] - 整个列表

heros=['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']
print(heros[::-1]) # ['孙斌','王昭君','甄姬','娜可露露','诸葛亮','李元芳','后裔']
print(heros[::2]) # ['后裔','诸葛亮','甄姬','孙斌']
print(heros[:])  #  ['后裔','李元芳','诸葛亮','娜可露露','甄姬','王昭君','孙斌']

2、3 遍历
方法一: 直接获取元素
for变量 in 列表:
循环体

变量取到的是列表中的每个元素

games=['王者荣耀','和平精英','狼人杀','植物大战僵尸','开心消消乐']
for x in games:
    print(x)

练习:统计列表中分数不及格的个数

scores=[90,89,67,54,32,99,67,100]
count=0
for x in scores:
    if x < 60:
        count+=1
print(count) # 2

方法二: 先获取每个元素对应的下标,然后在通过下标获取元素
for 变量 in range(列表长度)
列表[变量]

len(列表) - 获取列表中的元素个数

games=['王者荣耀','和平精英','狼人杀','植物大战僵尸','开心消消乐']
for x in range(5):
    print(x,games[x])

练习:给一个数字列表,打印列表中所有3的倍数对应的元素。

nums=[23,9,34,5,15,6]
for x in nums:
	if x % 3==0:
        print(x) # 9 15 6  

1、增 - 往列表中添加元素

1、1 列表.append(元素) - 在列表的最后添加指定的元素

subjects=['IOS','安卓']
subjects.append('h5')
print(subjects)  # ['IOS', '安卓', 'h5']


subjects.append([10,20])
print(subjects) # ['IOS','安卓','h5',[10,20]]

1、2 列表.insert( 下标,元素) - 在列表的指定下标对应的元素前插入指定元素

tvs=['甄嬛传','还珠格格','情深深雨蒙蒙','琅琊榜']
tvs.insert(1,'庆余年')
print(tvs) # ['甄嬛传','庆余年','还珠格格','情深深雨蒙蒙','琅琊榜']

练习:将输入的成绩插到scores中,要求插入后不影响分数的从大到小的排序性质

scores=[100,98,97,97,89,86,72,66,63,59,42]
n=80
for x in range(len(scores)):
    if scores[x] < =n:
        scores.insert(x,n)
        break
else:
    scores.append(n)
print(scores)
        

2、删 - 删列表中的元素
2、1 del 列表[下标] - 删除列表中指定下标的对应的元素

tvs=['甄嬛传','还珠格格','情深深雨蒙蒙','琅琊榜']
del tvs[2]
print(tvs) # ['甄嬛传','还珠格格','琅琊榜']

2、2 列表.remove(元素) - 删除列表中指定的元素

如果元素不存在会报错,如果列表中有多个,只删一个

tvs=['西游记', '甄嬛传', '庆余年', '庆余年','还珠格格', '情深深雨蒙蒙', '琅琊榜']
tvs.remove('庆余年')
print(tvs) # ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']

2、3
列表.pop() - 取出列表最后一个元素,并且返回
列表.pop(下标) - 取出列表中指定下标对应的元素

tvs=['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
result=tvs.pop()
print(tvs)  # ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙']
print(result) # 琅琊榜

3、改 - 修改元素的值

列表[下标] = 新元素 - 修改列表中指定下标对应的元素为新元素

tvs=['琅琊榜','庆余年','甄嬛传']
tvs[0]='生活大爆炸'
print(tvs)   #  ['生活大爆炸', '庆余年', '甄嬛传']

练习将分数列表中所有低于60分的修改成不及格

scores=[78,90,20,34,78,99,34,55]
for x in range(len(scores)):
    if scores[x] < 60:
        scores[x]='不及格'
print(scores) # [78, 90, '不及格', '不及格', 78, 99, '不及格', '不及格']

1、列表的数学运算 :+ 、 *

1、1 列表1+列表2 - 将两个列表合并产生一个新的列表

list1=[10,20,30]
list2=[100,200]
print(list2+list1)  # [100, 200, 10, 20, 30]
print(list2,list1)  # [100, 200] [10, 20, 30]

1、2 列表N 或者N列表 - 将列表中的元素重复N次产生一个新的列表

print(list2*3)  # [100, 200, 100, 200, 100, 200]

2、比较运算: ==、!=、>、<、>=、<=

2、1比较是否相等

print([10,20,30]==[20,10,30])  # False

2、2 比较大小 - 和个数无关,比较第一对不相等的元素的大小(两个列表相等位置上的元素的元素是一对)

print([100,200]>[10,20,30,40,1000]) # True
print([100,200,300]>[100,1000,2])  # False
  1. in 和 not in
    元素 in 列表 - 判断元素是否在指定的列表中
    元素 not in 列表 - 判断元素不在指定列表中
print(100 in [10,20])  #  False
print(100 not in [10,20])  #  True
print([10] in [10,20])  # False

4、相关函数: max 、min、sorted、sum、list、len

4、1 max(列表) - 获取列表中最大的元素(注意:列表的数据的性质一样,类型一致,并且元素本身支持比较元素)

nums=[89,923,78,100,92,8]
print(nums)  #  923
print(min(nums))  # 8

4、2 sorted(列表) - 将列表中的元素从小到大排序,产生一个新的列表

nums=[89,923,78,100,92,8]
new_nums=sorted(nums)
print(new_nums)  # [8, 78, 89, 92, 100, 923]

sorted(列表,reverse=True) - 将列表中的元素从大到小排序,排序后产生一个新的列表

nums=[89,923,78,100,92,8]
new_nums=sorted(nums,reverse=True)
print(new_nums)  #  [923, 100, 92, 89, 78, 8]

4、3 sum(列表) - 求列表的所有的元素之和(列表必须是数字列表)

nums=[89,923,78,100,92,8]
print(sum(nums))  #  1290

4、4 list(序列) - 将序列转换成列表(获取序列中所有的元素的创建一个新的列表)

注意:所有的序列都可以转换成列表

print(list('abc'))  # ['a', 'b', 'c']
# print(list(12))  #   报错

print(list(range(1,4)))  # [1, 2, 3]
print(list('q')) # ['q']

1.已知一个数字列表,求列表中心元素。

nums=[1,2,3,4,5,6]
for x in range(len(nums)):
    if (len(nums)+1) % 2 == 0:
        print(nums[int((len(nums)+1)/2 -1)])
        break
else:
    print(nums[int((len(nums)+1)/2 -1)],nums[int((len(nums)+1)/2 )])

2.已知一个数字列表,求所有元素和。

nums=[1,2,3,4,5]
print(sum(nums))

3.已知一个数字列表,输出所有奇数下标元素。

nums=[1,2,3,4,5,6,7]
for x in range(len(nums)):
    if x % 2 ==0:
        print(x)

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

nums=[1,2,3,4,5,6,7]
for x in range(len(nums)):
    if x % 2 ==0:
        print(nums[x])

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

nums=[1,3,3,4,5]
for x in range(len(nums)):
    nums[x]=nums[x]*2
print(nums)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

nums=[99,97,99,98,87,100]
nums.remove(max(nums))
nums.remove(min(nums))
nums=sum(nums)/len(nums)
print(nums)

8.有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]

A=[1,6,2,3,4,5]
B=[1,6,3,5,7,9]
C=[]
for x in A:
    for y in B:
        if x in B:
            C.append(x)
            break
print(C)

9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

10.*获取列表中出现次数最多的元素

例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值