day6-列表作业

day6.列表基础

1.作业

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

list1 = [18,99,87,54,63,54,55]
if len(list1) // 2 == 0:
    print(list[len(list1)//2],list[len(list1)//2-1])
eles:
    print(lsit[len(list1)//2])

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

list1 = [12,33,88,96,78]
sum = 0
for x in list1:
    sum += x
print(sum)

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

list1 = [10,22,33,44,55,66,77]
print(1::2)

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

list1=[13,54,66,39,45,22]
for x in list1:
    if x // 2 != 0:
        print(x)

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

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

nums = [5,6,7,8,9]
for x in range(len(nums)):
    y = nums[x] * 2
    nums[x] = y
print(nums)

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

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

names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
new_name = []
for x in names:
    if x not in new_name:
        new_name.append(x)
print(new_name) 

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

list1=[7,8,9,6,5,4,9,8,10]
sums = 0
list1.pop(max(list1))
list1.pop(min(list1))
for x in list1:
    sum += x
print(sum / len(list1))

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

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

A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C = []
for x in A:
    if x in B and x in A:
        C.append(x)
print(C)

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

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

nums = [19, 89, 90, 600, 1]       #投机取巧
for x in range(len(nums)-1):
    nums.remove(min(nums))
print(nums)

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

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

nums = [1, 2, 3,1,4,2,1,3,7,3,3]
max_count = 0
for i in nums:
    count = nums.count(i)
    if count > max_count:
        max_count = count
new_num = []
for i in nums:
    if nums.count(i) == max_count and i not in new_num:
        new_num.append(i)
print(new_num)

2.列表

1.容器型数据类型(序列)

“”"
容器从是否是容器分为:非容器型数据类型的变量和容器型数据类型的变量
非容器型数据类型的变量 - 一个盒子里面只有一个格子,所以同一时间只能保存一个数据。例如:int、float、bool、None
容器型数据类型的变量 - 一个盒子里面有多个格子,每个格子可以保存不一样的数据,所以同一时间就可以保存多个数据。
例如:list、dict、tuple、set、str等
“”"

scores = [89,70,98,23,90,67,62,78,23,89]
print(sum(scores))
print(max(scores),min(scores))
2.什么是列表

“”"
列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开:[元素1,元素2,元素3,…]
列表是可变的(可变指的是元素的个数、值和顺序可变 - 支持增删改操作);列表有序(支持下标操作)
列表中的元素:任何类型的数据都可以作为列的元素。(没有要求)

元素 - 指的是容器中每一个独立的数据
“”"

#空列表
list1 = []
print(list1)

#list2是一个列表,列表中只有一个元素
list2 = [19]

list3 = [10,20,30]
print(list3)

#同一个列表中的元素可以是不同类型的数据据
list4 = [10,'hello',12.8,True,[100,200]]
print(list4)

#空列表
list1 = []
print(list1)

#list2是一个列表,列表中只有一个元素
list2 = [19]

list3 = [10,20,30]
print(list3)

#同一个列表中的元素可以是不同类型的数据据
list4 = [10,'hello',12.8,True,[100,200]]
print(list4)

3.获取列表元素

1.获取单个元素

“”"
语法:
列表[下标] - 获取下标对应的元素

说明:
列表 - 保存列表的变量的表达式,;例如:保留列表的变量或者具体的列表数据
[] - 固定写法
下标 - 下标(又叫索引)是有序序列中元素的位置信息
第一种:从前往后从0开始一次增加
第二种:从后往前从-1开始一次减少

注意:下标不能越界
“”"

list1 = [10,20,30,40]
#[10,20,30,40][]
#list1[]
print(list1[0])   #获取list1中下标是0的元素  -> 10
print(list1[2])   #30
print(list1[-1])   #40
#print(list1[4])   #报错:IndexError: list index out of range

2.切片 - 获取部分元素
“”"
语法1:
列表[开始下标:结束下标:步长]

1)从开始下标到结束下标的方向如果和步长对应的方向(步长为正表示从前往后,步长为负表示从后往前)一致就可以获取到数据,否则结果就是空值
2)确定有效范围:开始下标对应的元素可以取到,结束下标对应的元素取不到 -> [开始下标,结束下标)
3)确定切片结果:在有效范围内按照步长绝对值取数据;绝对值为1就一个一个的取,绝对值为2就跳一个取一个

“”"

heroes = ['亚索','卡沙','EZ','沙皇','男枪','阿狸','猫咪','奶妈']
#开始下标到结束下标的方向如果和步长对应的方向一致,就可以取到数据
print(heroes[0:2:1])     #['亚索', '卡沙']
print(heroes[0:-1:1])     #['亚索', '卡沙', 'EZ', '沙皇', '男枪', '阿狸', '猫咪']
print(heroes[-1:2:-1])      #['奶妈', '猫咪', '阿狸', '男枪', '沙皇']

#开始下标到结束下标的方向如果和步长对应的方向不一致,一定取不到数据
print(heroes[1:4:-1])   #[]
print(heroes[5:1:2])   #[]

print(heroes[1:5:1])     #['卡沙','EZ','沙皇','男枪']

print(heroes[1:5:2])    #['卡沙','沙皇']
print(heroes[1:5:])     #['卡沙','男枪']

#练习:写出一下表达式的打印结果
heroes = ['亚索','卡沙','EZ','沙皇','男枪','阿狸','猫咪','奶妈']
print(heroes[0:5:2])   #['亚索','EZ','男枪']
print(heroes[1:-2:-1])   #[]
print(heroes[2:-2:2])    #['EZ','男枪']
print(heroes[-2:0:-3])    #['沙皇','猫咪']
print(heroes[-1:-4:1])    #[]
print(heroes[0:6:3])    #['亚索','沙皇']

#练习2:写切片获取以下指定内容
#['EZ','沙皇','男枪']
print(heroes[2:5:1])
#['亚索','卡沙','EZ','沙皇']
print(heroes[0:4:1])
#['猫咪','阿狸','男枪']
print(heroes[-2:-5:-1])
#['卡沙','沙皇,'阿狸']
print(heroes[1:-2:2])
#['奶妈','阿狸']
print(heroes[-1:-4:-2])
#['卡沙','猫咪']
print(heroes[1:7:5])

“”"
列表[开始下标:结束下标:步长]
语法2:省略步长
列表[开始下标:结束下标] - 步长为1

语法3:省略开始下标
列表[:结束下标:步长]/列表[:结束下标]

语法4:省略结束下标
列表[开始下标:步长] / 列表[开始下标:] - 如果步长为正,从第一个元素开始往后取;如果步长为负,从最后一个元素开始往前取
如果步长为正,从开始下标开始从前往后取完为止;如果步长为负,从开始下标开始从后往前取取完
“”"

heroes = ['亚索','卡沙','EZ','沙皇','男枪','阿狸','猫咪','奶妈']
print(heroes[1:3])  #['卡沙','EZ']
print(heroes[1:-1])  #['卡沙','EZ','沙皇','男枪','阿狸','猫咪']
print(heroes[3:0])   #[]

print(heroes[:3])   #['亚索','卡沙','EZ']
print(heroes[:3:-1])    #['奶妈','猫咪','阿狸','男枪']
print(heroes[:-2:2])    #['亚索','EZ','男枪',]

print(heroes[3:])   #['沙皇','男枪','阿狸','猫咪','奶妈']
print(heroes[-2::-2])    #['猫咪', '男枪', 'EZ', '亚索']

print(heroes[::-1])   #['奶妈', '猫咪', '阿狸', '男枪', '沙皇', 'EZ', '卡沙', '亚索']

#练习:推算以下表达式的打印结果
heroes = ['亚索','卡沙','EZ','沙皇','男枪','阿狸','猫咪','奶妈']
print(heroes[2:5])   #['EZ', '沙皇', '男枪']
print(heroes[3::-2])  #['沙皇', '卡沙']
print(heroes[-3::-1])   #['阿狸', '男枪', '沙皇', 'EZ', '卡沙', '亚索']
print(heroes[:-4:2])   #['亚索', 'EZ']
print(heroes[1::3])   #['卡沙', '男枪', '奶妈']
print(heroes[:-2])   #['亚索', '卡沙', 'EZ', '沙皇', '男枪', '阿狸']
3.遍历 - 一个一个的全部取出来

“”"
方法一:直接获取元素
for 变量 in 列表:
循环体

变量一次获取的就是列表中的每个元素

方法二:通过获取每个元素的下标来获取元素
for 变量 in range(列表长度):
循环体

变量依次获取的时候列表中元素的下标

补充:len(列表) - 获取列表的长度
“”"

nums = [23,8.9,90,89,78.3]
for x in nums:
    print('x:',x)

print('----------------------------------------------')
for x in range(len(nums)):
    print(x,nums[x])

print('----------------------------------------------')
#-1,-2,-3,-4,-5
for x in range(-1,-len(nums)-1,-1):
    print(x,nums[x])

# 练习:scores保存所有学生的分数
# 1)统计不及格学生人数
# 2)计算学生平均分
scores = [90, 78, 54, 67, 88, 30, 59]
count = 0
sums = 0
for x in scores:
    sums +=x
    if x < 60:
        count+=1
print(count,'平均分',sums/len(scores))

# 练习2:已知列表nums,统计nums中整数的个数
nums = [90, 1.23, 'abc', 12, 0.12]
count = 0
for x in nums:
    if type(x) == int:
        count+=1
print(count)

4.增删改、

增 - 添加元素

“”"
1)列表.append(元素) - 将元素添加到列表的最后
2)列表.insert(下标,元素) - 将元素插入到指定下标前

“”"

#1)append
list1 = [10,20]
print(list1)

list1.append(100)
print(list1)     #[10,20,100]

#append实例
# 练习:scores保存多个学生的分数,提取所有分数中不及格的分数
scores = [90, 78, 65, 45, 55, 89, 30, 99]
#[45,55,30]
new_scores = []
for x in scores:
    if x < 60:
        new_scores.append(x)
print(new_scores)


#2)insert实例
nums = [10,20,30,40]
print(nums)   #[10,20,30,40]

nums.insert(1,100)
print(nums)   #[10,100,20,30,40]

# 练习:已知一个列表,列表中的元素已经从小到大排好序,插入输入的数据,要求插入后不影响顺序
nums = [12, 23, 56, 78, 99, 120]
# 80   -> [12, 23, 56, 78, 80, 99, 120]
# 2    ->  [2, 12, 23, 56, 78, 99, 120]
value = 80
for x in range(len(nums)):
    if nums[x] >value:
        nums.insert(x,value)
        break
else:
    nums.append(value)
print(nums)
2.删 - 删除元素

“”"
语法1:del 列表[下标] - 删除指定下标对应的元素
“”"
tvs = [‘海贼王’, ‘七龙珠’, ‘琅琊榜’, ‘甄嬛传’, ‘名侦探柯南’, ‘还珠格格’]
print(tvs) #[‘海贼王’, ‘七龙珠’, ‘琅琊榜’, ‘甄嬛传’, ‘名侦探柯南’, ‘还珠格格’]

del tvs[1]
print(tvs) #[‘海贼王’, ‘琅琊榜’, ‘甄嬛传’, ‘名侦探柯南’, ‘还珠格格’]

“”"
语法2:列表.remove(元素) - 删除指定元素
“”"

tvs = ['海贼王', '七龙珠','甄嬛传', '琅琊榜', '甄嬛传', '名侦探柯南', '还珠格格']
print(tvs)

tvs.remove('还珠格格')
print(tvs)

#tvs.remove('三国')   #ValueError: list.remove(x): x not in list

tvs.remove('甄嬛传')  #如果有重复的删除第一个
print(tvs)

"""
语法3:列表.pop()  -   去除最后一个元素
     列表.pop(下标)  -  取出指定下标对应的元素,并且返回
"""
tvs = ['海贼王', '七龙珠','甄嬛传', '琅琊榜', '甄嬛传', '名侦探柯南', '还珠格格']
tvs.pop()
print(tvs)   #['海贼王', '七龙珠', '甄嬛传', '琅琊榜', '甄嬛传', '名侦探柯南']

tvs.pop(1)
print(tvs)   #['海贼王', '甄嬛传', '琅琊榜', '甄嬛传', '名侦探柯南']

result = tvs.pop()
print(tvs,result)   #['海贼王', '甄嬛传', '琅琊榜', '甄嬛传'] 名侦探柯南
3.改

列表[下标] = 值 - 将列表中指定下标对应的元素改成指定的值

movies = ['肖申克的救赎','海上钢琴师','长津湖','罗小黑战记']
movies[0] = 'V字仇杀队'
print(movies)   #['V字仇杀队', '海上钢琴师', '长津湖', '罗小黑战记']

#练习:将scores中所有不及格的分数改成0分  -> [90,0,89,0,88]
scores = [90,34,89,55,88]
for x in range(len(scores)):
    if scores[x] < 60:
        scores[x] = 0
print(scores)

in操作

1.in

元素 in 列表 - 判断列表中是否存在指定的元素
元素 not in 列表 - 判断列表中是否不存在指定元素

print(10 in [10,20,30])   #True
print([10,20] in [10,20,30])   #False
print([10,20] in [[10,20],30])  #True
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值