商城网站建设解决方案,二级网站内容建设要求,seo软件排行榜前十名,如何制作自己的网站教程title: “Python fishC 22” author: “hou wei” date: “2023-04-16” output: html_document
knitr::opts_chunk$set(echo TRUE)问答题 0.请问 运算符和 is 运算符有什么区别呢#xff1f;
在Python中运算符用于比较两个变量的值是否相等#xff0c;而is运算符用于判断…
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]])执行结果为3len()函数返回的是列表中元素的个数而不是列表中所有元素的个数。
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
z1.上一节的课后作业我们提到了“摩尔投票法”这种方法尤其适用于在任意多的选项中找到数量占比最多的那一个。那么这一次我们修改一下要求编写代码利用“摩尔投票法”来找出占比数量最多的两个元素注意这两个元素的数量都需要超过总数的三分之一。
看到题目我第一思路就是先将占比最多的找到然后将其排除再找到剩下元素占比最多的即可。
首先是对抗阶段再是统计比较
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)