鱼C论坛

 找回密码
 立即注册
查看: 1723|回复: 0

[学习笔记] 零py-(ep-12)

[复制链接]
发表于 2023-8-2 16:38:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Nicole37 于 2023-8-2 16:38 编辑

列表3:

改:
  1. a = ["看展","书店看书","citywalk","看落日","教研室"]
  2. a[4] = "看电影" #改列表中的元素,可以直接下标索引替换即可
  3. a
  4. ['看展', '书店看书', 'citywalk', '看落日', '看电影']
  5. a[1:] = ["旅游","旅游","旅游","旅游"] #可以用切片的方式改列表中连续的元素
  6. a
  7. ['看展', '旅游', '旅游', '旅游', '旅游']
复制代码

数字列表的排序问题:
由数字组成的列表可以直接使用sort()来进行从小到大的排序,使用reverse()进行从大到小排序
  1. a = [1,8,6,7,2,9,3,4]
  2. a.sort()
  3. a
  4. [1, 2, 3, 4, 6, 7, 8, 9]
  5. a.reverse()
  6. a
  7. [9, 8, 7, 6, 4, 3, 2, 1]
复制代码

注意:
1、reverse() 是直接对列表进行倒叙排列,先调用sort(),在调用reverse(),才可将数字列表进行从大到小的排序,so,reverse()可以用在任何类型的列表中
2、直接对数字列表进行一步从大到小的排序:sort(reverse=True)
e.g
  1. a = [1,8,6,7,2,9,3,4]
  2. a.sort(reverse=True)
  3. a
  4. [9, 8, 7, 6, 4, 3, 2, 1]
复制代码


查:
查找列表中某个元素出现的次数:count(元素)
  1. a = [1,8,6,7,2,9,3,4]
  2. a.count(4)
  3. 1
  4. b = ["看barbie","旅游","旅游","旅游","旅游"]
  5. b.count("旅游")
  6. 4
复制代码

查找列表中某个元素出现的索引值:index(元素) 返回的是第一次出现的下标值
  1. b.index("看barbie")
  2. 0
复制代码

注意:可以用来在未知某元素的索引值时,企图将其替换的场景下
  1. b[b.index("看barbie")] = "睡懒觉"
  2. b
  3. ['睡懒觉', '旅游', '旅游', '旅游', '旅游']
复制代码

index(x,start,end) :规定了index查找的范围:
  1. c = [1,8,5,6,9,8,4,5]
  2. c.index(8,3,9) #从下标从3开始到9的范围内查找元素8的索引值
  3. 5
复制代码

拷贝一个列表:copy()
  1. c = [1,8,5,6,9,8,4,5]
  2. d = c.copy()
  3. d
  4. [1, 8, 5, 6, 9, 8, 4, 5]
  5. d = c[:] #用切片的方法,将c中所有元素取出来,赋给d
  6. d
  7. [1, 8, 5, 6, 9, 8, 4, 5]
复制代码


作业:
1、注意 下标索引是从a到b-1 ,结束位置是不包含的
2、注意:所有的元素方法格式均为 列表名称.方法
3、
  1. s = [1, 2, 3, 4, 5]
  2. t = s
  3. s[2] = 1
  4. print(t)
  5. [1, 2, 1, 4, 5]
复制代码

列表变量名的赋值只不过是引用的拷贝,如果你修改了列表中的元素,那么会影响到另外一个指向它的引用
4、摩尔计数,主要元素:
如果有一个列表,其中占比超过一半的元素称之为主要元素,那么如何获取一个列表的主要元素呢?题目给定的列表是:[2, 2, 4, 2, 3, 6, 2]
摩尔投票法有时候也被称为“多数投票法”,该算法解决的问题是如何在任意多的候选人中(选票无序),找到获得票数最多的那个,摩尔投票法分为两个阶段:
对抗阶段:分属两个候选人的票数进行两两对抗抵消
计数阶段:计算对抗结果中最后留下的候选人票数是否有效
  1. nums = [2, 2, 4, 2, 3, 6, 2]  #摩尔计数法
  2.    
  3. # 对抗阶段    major存放第一个元素,依次遍历后面的所有元素,count统计该元素出现的次数
  4. major = nums[0] #初始主角为第一个元素
  5. count = 0   #将其出现次数设为0
  6. for each in nums:  #循环遍历所有的元素
  7.     if count == 0:  #若当count的值经过加加减减变成0时,则说明当前的主角票数抵消完了,换下一个主角,即当前的元素
  8.         major = each
  9.     if each == major: #如果count的值没到0,则说明主角不变,若遍历的当前元素值与主角相等,则票数加一
  10.         count += 1
  11.     else:
  12.         count -= 1 #如果不等,则票数减一
  13.    
  14. # 统计阶段
  15. if nums.count(major) > len(nums) / 2: #最终的留下的major是有票数 或者票数为的,计算该元素在列表中出现的次数,若超过半数,则为主要元素,否则不存在
  16.     print("主要元素是:", major)
  17. else:
  18.     print("不存在主要元素。")
复制代码

评分

参与人数 2荣誉 +10 鱼币 +4 贡献 +6 收起 理由
python爱好者. + 5 + 3 鱼C有你更精彩^_^
歌者文明清理员 + 5 + 4 + 3

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 07:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表