關於python入門經典的葛底斯堡演說
def
analysefile
(file)
: words =
for line in file:
lineword = line.split(
)for word in lineword:
word.lower(
) word.strip(
',.'
)if word !=
'--'
:return words
defmakeunique
(speech)
: unique =
notunique =
for word in speech:
if word not
in unique:
elif word in unique and word not
in notunique:
elif word in unique and word in notunique:
continue
return
len(unique)
-len
(notunique)
gfile =
open
("gettysburg"
,'r'
)speechwords = analysefile(gfile)
print
("speech length:"
,len
(speechwords)
)uniquewords = makeunique(speechwords)
print
("unique length:"
, uniquewords)
我覺得書中的**並不能實現提出的目標:
追蹤檔案只出現一次的不同單詞
我將第二個函式進行了修改,如果乙個單詞第一次出現進去unique,第二次出現進去notunique,之後再出現不進行處理。這樣子兩個列表元素之差就代表只出現一次的不同單詞數量
程式設計的小tip
在python中的並且和或不是 && ||,而是英文單詞and和or
只出現一次的數字
1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...
只出現一次的數
給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其他所有元素均出現兩次。找出只出現一次的那兩個元素。示例 給定 nums 1,2,1,3,2,5 返回 3,5 注意 結果的順序並不重要,對於上面的例子 5,3 也是正確答案。你的演算法應該具有線性複雜度,你能否僅使用恆定的空間複雜度來實現它...
只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4核心思想 對list排序,然後遍歷 class ...