python day03筆記&練習
這一波我們學習的是python中比較關鍵的兩個資料結構 列表和字典
列表俗稱打了激素的陣列 因為它不僅有陣列的全部功能 而且每個索引的數值型別可以不同
不像陣列 只能存同類型的資料 列表可以存各種各樣的資料型別
並且相對於不可變得元組 列表是可變的有序資料結構
列表的索引 完全和字串是相同的 正向 逆向 切片 都是相同的操作
重複和連線 也是有和字串相同的方法
那麼下來就是增刪查改
首先 增
增加有兩種常用的方法
append方法和insert方法
append方法是將括號中的引數 追加到列表的最後
insert方法有兩個引數 index和value 將value插入到對應的index位置
還有一個方法叫extend拉伸 這個可以把括號中的多個引數 追加到列表後面
然後 改
改的話很簡單 就是列表對應索引的再賦值
查
查的話 有count方法 統計一個引數在列表中出現的次數
index方法 查詢引數在列表中對應的索引值
刪
刪的話 指定value刪的方法是remove
直接刪的話 del+ 列表[索引]
也可以使用切片 來實現各種型別的刪除
整個刪除列表的話就是del + 列表
然後排序的話 是使用sort方法 但是不建議在各種型別的值都有的列表中使用 因為排序在不同數值型別之間是沒有意義的
逆轉還是使用切片的方式[::-1]
2. 字典
字典是比較特殊的一個數據結構 主要就是建立一個key和value的對映關係 就像c的連結串列一樣 每個value對應一個它後繼的指標 然後這一對資料被存在一個地址空間裡
字典也是一樣 把一個鍵 值 的對 一對一對的儲存起來
字典的話還要說說建立
可以使用key:value直接建立 如下
d = {"key1":"value1", "key2":"value2"}
也可以通過工廠函式建立
userinfo = dict(user1="123", user2="456", user3 ="789")
還可以通過fromkeys方法建立
print {}.fromkeys("hello") 沒有指定value值時 預設為none
print {}.fromkeys(["user1", "user2", "user3"], "123")
這樣的話 預設值就是123
同時 字典具有以下的特性:
字典不能索引和切片,因為字典是無序的資料型別;
字典不支援重複和連線;
字典支援成員操作符: 判斷字典的key值是否在字典中存在; in, not in
那麼下來說字典的增刪查改
增
可以通過[key]=value直接新增
services['http'] = [80, 8080]
但是更推薦使用update方法新增
但是update有個特點就是如果字典中已存在要新增的key值的話 那麼原先的對 就會被新加的對覆蓋
而setdefault方法 的話 不會覆蓋原先的鍵值對 但是如果key存在的話 是新增不進去的
所以從這裡 可以看出來 key對於字典來說 相當於資料庫表中的primary key 主鍵一樣 是唯一標識的 不能重複
改
字典名[key]=value
d.update({'a':2, 'b':3})
d.update(a=2, b=3)
這三種方法都是可以的 感覺還是和增是同樣的操作
查
檢視 key 值的話
services.keys()
services.viewkeys()
services.iterkeys()這三個方法是可以的
檢視value值使用 values方法
檢視鍵值對 的話 用items方法
檢視key是否存在 使用has_key方法
刪
d.pop(key) 刪除指定 key 的字典元素
d.popitem() 隨機刪除字典的 key-value 元素
del d[key] 刪除指定 key 的字典元素
d.clear() 清空字典元素
要迴圈遍歷字典的話 使用一個二重迴圈
for i,j in services.items():
print i,j
而且 字典還有一個很有意思的用法
用來實現switch——case語句
因為python是不支援switch——case的
但是字典剛好是key value的鍵值對 並且值可以是一個表示式 那麼剛好可以利用這個結構來構建switch——case
num1 = input()
ope = raw_input()
num2 = input()
d = {
"+" : num1+num2,
"-" : num1-num2,
"*" : num1*num2,
"/" : num1/num2,
}
if not ope in d:
print "error operator"
else:
print d[ope]
那麼筆記整理到此結束 下面是練習
輸入一串字元 判斷其中最後一個單詞的長度 單詞以空格隔開
輸入一串字元和一個字母 以空格隔開 判斷字母在前面的字元中出現過多少次
將轉義過後的密碼翻譯成正確的密碼 密碼對應規則是 大寫字母小寫並後移一位 小寫字母對應成手機九宮格鍵盤的數字 數字不變
騰訊程式設計
輸入一個1~2000的數字 判斷共有多少對素數相加的和等於這個數
這個不好測試手算太麻煩 我大概算了一下前20 是滿足的 後面數字太大不好算了 應該是對的吧