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)

 

posted @ 2022-07-07 16:48  DICEi  阅读(42)  评论(0)    收藏  举报