当前位置: 首页 > news >正文

嵌套列表,与摩尔投票进阶


title: “Python fishC 22”
author: “hou wei”
date: “2023-04-16”
output: html_document

knitr::opts_chunk$set(echo = TRUE)

问答题


0.请问 == 运算符和 is 运算符有什么区别呢?

在Python中==运算符用于比较两个变量的值是否相等,而is运算符用于判断两个变量引用对象是否为同一个,即所引用的对象的内存地址是否一致。

1.请问下面代码的执行结果是?

[[1, 2, 3], [4, 5, 6]] + [7, 8, 9]

执行错误结果为[[1, 2, 3], [4, 5, 6], [7, 8, 9]],正确结果为[[1, 2, 3], [4, 5, 6], 7, 8, 9]

2.请问下面代码的执行结果是?

 len([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

执行结果为3,len()函数返回的是列表中元素的个数,而不是列表中所有元素的个数。

3.请问下面代码的结果是返回 True 还是 False 呢?

a = 250
b = 250
a is b

代码返回的是Ture,列表和字符串的存储方式是不同的。如果是列表的话,上面的返回结果就是FALSE。

4.请问下面代码的结果是返回 True 还是 False 呢?

a = 1000
b = 1000
a is b

这串代码的返回结果是FALSE。这是因为Python中,对于小整数和字符串,Python 会缓存这些对象,以便重复使用。在这种情况下,a和b引用的是相同的对象,因此 a isb 返回True。但是,对于大整数和大型字符串等对象,Python不会缓存它们,因此 a 和 b 引用的是不同的对象,a is b 返回 False。出于性能优化方面的考虑,Python 在内部为 -5~256 范围内的整数维护了一个数组,起到缓存的作用。

5.既然有二维列表,那么三维列表应该也是“同理可得”的东西,请大家尝试创建一个简单的三维列表吧?

先可以使用元素值来创建二维列表,还可以使用循环语句来创建二维列表。

matrix = [[1,2,3],[1,2,3],[1,2,3]]A = [0]*3
for i in range(3):A[i] = [0]*3

列表推导式的方法如下

dp = [[[0 for i in range(3)] for j in range(3)] for k in range(3)]
dp

列表推导式是Python构建列表的一种快捷方式,可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的列表。列表推导式的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,其中包含符合条件的元素。

或者使用嵌套的for循环来创建三维列表

dp = []
for i in range(3):dp.append([])for j in range(3):dp[i].append([0] * 3)
dp

动动手


0. 请根据下面的内存关系图,分别创建出 x、y 和 z 三个不同的列表。

如下图:
在这里插入图片描述

x = [[0]*3]*3y = [0]*3
for i in range(3):y[i] = [0]*3z = []
for i in range(3):z.append([])for j in range(3):z[i].append([0] * 2)x 
y
z

1.上一节的课后作业我们提到了“摩尔投票法”,这种方法尤其适用于在任意多的选项中找到数量占比最多的那一个。那么这一次我们修改一下要求,编写代码,利用“摩尔投票法”来找出占比数量最多的两个元素(注意:这两个元素的数量都需要超过总数的三分之一)。

看到题目我第一思路就是先将占比最多的找到,然后将其排除,再找到剩下元素占比最多的即可。

首先是对抗阶段,再是统计比较

nums = [2, 2, 4 , 2, 3, 4, 6, 2, 2]
major = nums[0]
count = 0  
for each in nums:if count == 0:major = eachif each == major:count += 1else:count -= 1if nums.count(major)> len(nums)/3:print("占比最多的第一个元素是:", major)
else:print("不存在占比最多的元素。")

我们可以思考,如果某个元素再序列里面大于1/3但是小于1/2,上面的代码将无法为我们找出对应正确的元素。所以第一思路也存在一定的问题。

我们带入两个元素进去就不会出现上面的问题啦。

def majorityElement(nums):candidate1 = nums[0]candidate2 = nums[0]count1 = 0count2 = 0for num in nums:if num == candidate1:count1 += 1elif num == candidate2:count2 += 1elif count1 == 0:candidate1 = numcount1 = 1elif count2 == 0:candidate2 = numcount2 = 1else:count1 -= 1count2 -= 1return [n for n in (candidate1, candidate2) if nums.count(n) > len(nums) // 3]nums = [2, 2, 4 , 2, 3, 4, 6, 2, 4]
print("占比最多的两个元素分别是:",candidate1,candidate2)

同时也可以使用continue函数

nums = [1, 1, 2, 1, 3, 2, 3, 2]major1 = major2 = nums[0]
count1 = count2 = 0# 对抗阶段
for each in nums:if major1 == each:count1 += 1continueif major2 == each:count2 += 1continueif count1 == 0:major1 = eachcount1 = 1continueif count2 == 0:major2 = eachcount2 = 1continuecount1 -= 1count2 -= 1# 统计阶段
if nums.count(major1) > len(nums) / 3:print(major1)
if nums.count(major2) > len(nums) / 3:print(major2)

相关文章:

嵌套列表,与摩尔投票进阶

title: “Python fishC 22” author: “hou wei” date: “2023-04-16” output: html_document knitr::opts_chunk$set(echo TRUE)问答题 0.请问 运算符和 is 运算符有什么区别呢? 在Python中运算符用于比较两个变量的值是否相等,而is运算符用于判断…...

ChatGPT原理解释

写了一本介绍ChatGPT原理的课程 结构如下 01、介绍ChatGPT及其原理 1.1 ChatGPT的概述 1.2 什么是自然语言处理(NLP) 1.3 深度学习与NLP的关系 1.4 GPT模型的介绍 02、GPT原理探讨 2.1 GPT模型的输入与输出 2.2 GPT模型的结构 2.3 GPT模型的预训练方法…...

【配电网故障重构SOP】基于二阶锥松弛的加光伏风机储能进行的配电网故障处理和重构【考虑最优潮流】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

ajax 的入门案例

一、ajax ajax,Asynchronous JavaScript And XML,异步的JavaScript和XML 同步:伴随着页面的刷新或跳转,即全局刷新;同步请求会阻塞代码的执行,即同步请求会一个一个的执行 异步:在不刷新页面…...

Flutter TextField 交互实例 —— 新手礼包

大家好,我是 17。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交互实例 —— 新手礼包 本篇包含所有常…...

折叠屏:手机厂商的「续命良药」

【潮汐商业评论/文】 作为办公室的“时尚达人”,Wendy又为自己添置了一款新时尚单品——折叠手机。 “没有哪个女孩子能拒绝一款小巧又时尚的折叠手机吧,我心动了好久,终于狠狠心买了一部。”提起自己的折叠手机,Wendy的眼里满是…...

RabbitMQ 保证消息不丢失的几种手段

文章目录 1.RabbitMQ消息丢失的三种情况2.RabbitMQ消息丢失解决方案2.1 针对生产者2.1.1 方案1 :开启RabbitMQ事务2.1.2 方案2:使用confirm机制 2.2 Exchange路由到队列失败2.3 RabbitMq自身问题导致的消息丢失问题解决方案2.3.1 消息持久化2.3.2 设置集…...

nginx配置

单线程应用 稳定性高 系统资源消耗低 线程切换消耗小 对HTTP并发连接处理能力高 单台服务器可支持2w个并发请求 nginx与apache区别 Nginx相对于Apache的优点: 轻量级,同样是 web 服务,比Apache 占用更少的内存及资源,高并发&#xff0…...

linux从入门到精通 第一章centos7里tomcat,jdk,httpd,mysql57,mysql80的安装

配置centos运行环境 一 安装httpd,tomcat,jdk,mysql1 安装httpd2 安装tomcat3 安装jdk 三 MySql的安装1 克隆出来两台虚拟机2 配置虚拟机3 链接xhsell4 链接xftp5 mysql8的安装6 mysql5.7的安装 一 安装httpd,tomcat,jdk,mysql 1 安装httpd 下载httpd yum -y install httpd关…...

ChatGPT 速通手册——开源社区的进展

开源社区的进展 在 ChatGPT 以外,谷歌、脸书等互联网巨头,也都发布过千亿级参数的大语言模型,但在交谈问答方面表现相对 ChatGPT 来说都显得一般。根据科学人员推测,很重要的一部分原因是缺失了RLHF(Reinforcement Learning with…...

string类

string - C Reference (cplusplus.com) 引入: ASCII码表------>Unicode 其中又进行了分类: (UTF--8兼容ASCII码表) 等等等等 (不但迭代和更新) 例: 目录 正文开始!&#xff0…...

LLM总结(持续更新中)

引言 当前LLM模型火出天际,但是做事还是需要脚踏实地。此文只是日常学习LLM,顺手整理所得。本篇博文更多侧重对话、问答类LLM上,其他方向(代码生成)这里暂不涉及,可以去看综述来了解。 之前LLM模型梳理 …...

【GPT4】微软 GPT-4 测试报告(2)多模态与跨学科的组合

欢迎关注【youcans的AGI学习笔记】原创作品,火热更新中 微软 GPT-4 测试报告(1)总体介绍 微软 GPT-4 测试报告(2)多模态与跨学科能力 微软 GPT-4 测试报告(3)编程能力 微软 GPT-4 测试报告&…...

Celery使用教程完整版【从安装到启用】

Celery是一个基于Python开发的异步任务队列,可以实现任务的异步调度和处理。 以下是Celery使用教程的基本步骤: 安装Celery库 使用pip命令安装Celery库: pip install celery 创建Celery实例 在项目的Python文件中创建Celery实例&#x…...

【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了

JPA编程专题 JPA的介绍JPA的介绍分析JPA注解总览JPA实体型注解EntityTableTableGeneratorTableGenerator 属性 Temporal TransientColumnColumn 属性ColumnUniqueConstraint属性状态 VersionVersion Embeddable 和 EmbeddedEmbedded EmbeddedIdMappedSuperclassEntityListeners…...

Java基础:IO流有哪些,各有什么特点和功能

具体操作分成面向字节(Byte)和面向字符(Character)两种方式。 如下图所示: IO流的三种分类方式 IO流的层次结构 IO流的常用基类有: 字节流的抽象基类:InputStream和OutputStream; 字符流的抽象基类:Reader和Writer…...

MySQL、PostgreSQL、Oracle、SQL Server数据库触发器实现同步数据

数据库触发器是一种在数据库中设置的程序,当满足某些特定条件时,它会自动执行。触发器通常与数据表的操作(例如插入、更新和删除)相关联,它们可以帮助保证数据的完整性和一致性。在本篇博客中,我将介绍各种…...

因为我没交周报,leader要罚款200元,怎么给他挖坑?能以敲诈勒索罪告他吗?...

没交周报就罚款,这种事你们遇到过吗? 一位网友说:leader在群里通知不交周报就罚款,这周罚到他头上,要罚款200元,这种情况怎么办?能定他一个敲诈勒索罪或者抢劫罪吗?最差也要在离职后…...

java跨域问题

什么是跨域? 跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com页面去请求www.google.com的资源。但是一般情况下不能这么做,他是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。 跨域的严格定义是&…...

故障重现, JAVA进程内存不够时突然挂掉模拟

背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:26…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...