|
发表于 2022-12-8 22:55:28
|
显示全部楼层
二、作业
问答题
0. 请问如何不直接使用下标索引值的前提下,将下面列表中的 “黑寡妇
“ 替换为 ”神奇女侠“?
>>> heros = ['蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']
答:heros[heros.index('黑寡妇')] = '神奇女侠' 。
1. 请问如何将下面列表中的 “蜘蛛侠” 和 “绿巨人” 替换为 “猪猪侠” 和 “女
巨人”?
>>> heros = ['蜘蛛侠', '绿巨人', '神奇女侠', '鹰眼', '灭霸', '雷神']
答:heros[0:2] = ['猪猪侠','女巨人']
2. 请问以下代码会打印什么内容?
>>> s = [1, 2, 3, 4, 5]
>>> s[1:2] = [6, 6]
>>> print(s)
答:[1,6,6,3,4,5]
3. 请问以下代码会打印什么内容?
>>> s = [1, 2, 3, 4, 5]
>>> s[:] = "FishC"
>>> print(s)
答:['F','i','s','h','C']
4. 请问以下代码会打印什么内容?
>>> s = [1, 2, 3, 4, 5]
>>> s[2:4] = []
>>> print(s)
答:[1,2,5]
5. 请问以下代码会打印什么内容?
>>> s = [1, 2, 3, 4, 5]
>>> t = s
>>> s[2] = 1
>>> print(t)
答:[1,2,1,4,5]
6. 我们知道,列表的 index() 方法可以找到第一个匹配元素的下标,那么你有没有办法在不改变原列表的情况下,找到最后一个匹配元素的下标
呢?(有两种方法可以实现)
答:
s = [1,2,3,4,5,4,3,2]
print(len(s[::-1])-1-s[::-1].index(4))
动动手
0. 如果有一个列表,其中占比超过一半的元素称之为主要元素,那么如
何获取一个列表的主要元素呢?
题目给定的列表是:[2, 2, 4, 2, 3, 6, 2]
请根据解题思路进行编程。
解题思路:
根据主要元素的定义,对列表进行排序操作之后,主要元素必然会
出现在列表长度一半之后的一个位置上。所以,我们只需要判断列表中是否有超过一半的元素与中间元素相同即可(如果有,中间元素为主要元素;否则,不存在主要元素)。
1. 其实上面这道题有一个经典的解法,就是使用摩尔投票法(Boyer–Moore majority vote)。摩尔投票法有时候也被称为“多数投票法”,该算法解决的问题是如何在任意多的候选人中(选票无序),找到获得票数最多的那个。
摩尔投票法分为两个阶段:
对抗阶段:分属两个候选人的票数进行两两对抗抵消
• 计数阶段:计算对抗结果中最后留下的候选人票数是否有效
大家不妨可以将摩尔投票法的工作原理想象为诸侯争霸,假设每个
国家都是全民皆兵,并且打起仗来都是以 1 换 1 的形式消耗人口,当一个国家人口总数为 0,那么 Gameover,OK,如果某国人口数量超过所有国家好了,提示到此为止,大家开始专注搞代码吧!
s = [2,2,4,2,3,6,2]
s.sort()
if len(s) % 2 == 0:
a = s[int(len(s)/2)]
else:
c = len(s) - 1
a = s[int(c/2)]
b = s.count(a)
if b > int(len(s)/2):
print("主要元素是",a)
else:
print("没有主要元素")
|
|