python 作业21 列表4
问题:
0.请问 == 运算符和 is 运算符有什么区别呢?
== 运算符用于判断两个变量的值是否相等,而 is 运算符用于判断两个变量是否为同一对象。
1.请问下面代码的执行结果是?
>>> [[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
3. 请问下面代码的结果是返回 True 还是 False 呢?
>>> a = 250
>>> b = 250
>>> a is b
出于性能优化方面的考虑,Python 在内部为 -5~256 范围内的整数维护了一个数组,起到缓存的作用。这样,每次你试图创建一个 -5~256 范围内的整数时,Python 都会从这个数组中返回相对应的引用,而不是重新开辟一块新的内存空间存放。
所以是ture
4.请问下面代码的结果是返回 True 还是 False 呢?
>>> a = 1000
>>> b = 1000
>>> a is b
false
5.既然有二维列表,那么三维列表应该也是“同理可得”的东西,请大家尝试创建一个简单的三维列表吧?
a = [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[1, 1, 1], [1, 1, 1], [1, 1, 1]], [[2, 2, 2], [2, 2, 2], [2, 2, 2]]]
动动手:
0.请根据下面的内存关系图,分别创建出 x、y 和 z 三个不同的列表。

图一: x=[[0]*3]*3 图二: y=[0]*3 for i in range(3): y[i] = [0]*3 图三: z = [0]*3 for i in range(3): z[i] = [0]*3 for j in range(3): z[i][j] = [0]*2
1.上一节的课后作业我们提到了“摩尔投票法”,这种方法尤其适用于在任意多的选项中找到数量占比最多的那一个。
那么这一次我们修改一下要求,编写代码,利用“摩尔投票法”来找出占比数量最多的两个元素(注意:这两个元素的数量都需要超过总数的三分之一)。
nums = [1, 1, 2, 1, 3, 2, 3, 2] major1 = major2 = nums[0] count1 = count2 = 0 # 对抗阶段 for each in nums: if major1 == each: count1 += 1 continue if major2 == each: count2 += 1 continue if count1 == 0: major1 = each count1 = 1 continue if count2 == 0: major2 = each count2 = 1 continue count1 -= 1 count2 -= 1 # 统计阶段 if nums.count(major1) > len(nums) / 3: print(major1) if nums.count(major2) > len(nums) / 3: print(major2)

浙公网安备 33010602011771号