0.請(qǐng)問 == 運(yùn)算符和 is 運(yùn)算符有什么區(qū)別呢蚁滋?
答:== 是用于判斷兩個(gè)變量是否相等 is 是判斷兩個(gè)變量是否為同一對(duì)象
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.請(qǐng)問下面代碼的結(jié)果是返回 True 還是 False 呢
a = 250
b = 250
a is b
Ture
a = 1000
b = 1000
a is b
False
如果超過了 -5~256 這個(gè)范圍,則Python會(huì)單獨(dú)開辟兩塊不同的內(nèi)存區(qū)域遥倦。
5.既然有二維列表献雅,那么三維列表應(yīng)該也是“同理可得”的東西碉考,請(qǐng)大家嘗試創(chuàng)建一個(gè)簡單的三維列表吧?
three = [[[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]]]
動(dòng)動(dòng)手:
-
請(qǐng)根據(jù)下面的內(nèi)存關(guān)系圖挺身,分別創(chuàng)建出 x侯谁、y 和 z 三個(gè)不同的列表。
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
- 上一節(jié)的課后作業(yè)我們提到了“摩爾投票法”章钾,這種方法尤其適用于在任意多的選項(xiàng)中找到數(shù)量占比最多的那一個(gè)墙贱。那么這一次我們修改一下要求,編寫代碼贱傀,利用“摩爾投票法”來找出占比數(shù)量最多的兩個(gè)元素(注意:這兩個(gè)元素的數(shù)量都需要超過總數(shù)的三分之一)惨撇。
摩爾投票法的工作原理想象為諸侯爭霸,假設(shè)每個(gè)國家都是全民皆兵府寒,并且打起仗來都是以 1 換 1 的形式消耗人口魁衙,當(dāng)一個(gè)國家人口總數(shù)為 0,那么 Gameover株搔,OK剖淀,如果某國人口數(shù)量超過所有國家總?cè)丝诘囊话耄罱K贏家就肯定是它邪狞。
摩爾投票法分為兩個(gè)階段:
對(duì)抗階段:分屬兩個(gè)候選人的票數(shù)進(jìn)行兩兩對(duì)抗抵消
計(jì)數(shù)階段:計(jì)算對(duì)抗結(jié)果中最后留下的候選人票數(shù)是否有效
nums = [1, 1, 2, 1, 3, 2, 3, 2]
major1 = major2 = nums[0]
count1 = count2 = 0
# 對(duì)抗階段
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
# 統(tǒng)計(jì)階段
if nums.count(major1) > len(nums) / 3:
print(major1)
if nums.count(major2) > len(nums) / 3:
print(major2)