1 列表的遍歷,
for key in listName :
print(key)
看起來簡單明瞭,就是不知道這個和JavaScript的foreach的核心算法是否一致,反正效率應該是比普通的for循環要高的,Python裏面提供一種容易理解的鍵對 即單數對複數的形式 比如 for cat in cats:,但是有個問題是這樣的 遇到不可數名詞就只能強行給他加s了.還有個事就是昨天提到的Python之禪 畢竟Python這東西都沒有大括號的 所以縮進成爲唯一可以識別代碼的表示,需要用到循環的記得一定要 加table,如果不加 那麼得到的就是循環完成以後最後一個值。
2 rang[0,10) 排序函數 這個是一個左開右閉的函數,可以生成一串有序的數字列表 當然也可以直接簡寫爲range(10),默認從0開始執行,如果要產生一個某條件的列表可以用下面的代碼執行
list_one = []
for key in range(10):
num = (key+1)**2
list_one.append(num)
print(list_one)
list_one = []
for key in range(1,11):
num = key**2
list_one.append(num)
print(list_one)
上面兩段代碼效果一直,考慮到第一種方法可能會佔用更多的運算內存,推薦使用第二種,也就是如果你的列表需要從1開始,最好在range()裏面寫清楚,這樣也更容易理解,當然了 還有一種簡單的寫法
list_one = [ key**2 for key in range(1,11)]
#前面是列表需要滿足的條件 後面是執行循環的range值域
3 當然了 筆試的時候其他語言可能會有題目問問你 如何寫一個確認某數組中的最大值之類的題目,
大致可以這樣實現
function(第一個參數,第二個參數){
return 第一個參數-第二個參數>0?第一個參數:第二個參數;
}
然後用一個列表循環來進行執行,但是Python的話 提供max() min() 和sum()三個方法 ,給我們寫好了,直接拿來用就是了,所以Python的算法題目裏大致是不會有求和這種弱智問題的,
嗯 列表裏面的條件貌似並不支持騷操作
列表:╭(╯^╰)╮ 我是認真的 拜託不要給我加兩個以上判定條件
list = []
for i in range(1,21):
if(i%2 == 1):
list.append(i)
print(list)
好像就只能比較老實的寫了 再試試三目運算符
不曉得是否寫錯了 貌似不行
4列表的切片
list[左邊位置,右邊位置]同樣的也是左包含,右不包含,不過由於是從第0個開始數的 所以想要切前五個list[:5]就行了 還有一點就是拷貝問題,
id一樣,看起來似乎是淺層拷貝
經過一番驗證以後這種拷貝方法確實是淺層拷貝,意思是改變拷貝的數組以後原數組會跟着改變,雙方指向同一個物理地址
當然了 深度克隆也十分簡單,直接用切片的方式
即 list2 = list[:]這種就可以直接深度克隆,由於是基礎方法 ,所以不存在封裝深度克隆的說法 這讓我想起了學習JavaScript的深度克隆的不太好的體驗,需要進行每一層的判定,然後一串代碼封裝,直到現在都還需要思考半天才能寫出來,
5元組 和數組(列表)類似,用()裝起來,只能進行讀取的操作,並沒有傳統意義的增刪改查,元祖的目的估計是爲了防止有人手賤去修改某些不能修改的元素,
6 pep 8的幾點要求 ①縮進採用四個空格 ②每行不超過80字符③其他指南請參考http://python,org/dev/peps.pep-0008/
7 if 語句
if conditional_test:
do somethiing
這個貌似沒有傳統意義的括號啊 直接把空格當括號用了。這點有點類似於JavaScript的typeof number這種函數,用空格就可以實現功能 估計是因爲括號打起來沒有空格快捷
關於in 這種直接可以判定的方法
每種不足的就是並不知道在列表的哪個位置,不過要是單純用於判斷已經足夠了
類似的還有not in 方法,判定是否該元素不存在於列表之中。
if-elif-else
if age<10:
print("你可以不承擔法律責任")
elif<16:
print("小心點,某些責任可能讓你坐牢")
elif<18:
pass
else:
pass
手寫的時候很容易把 else if寫出來 不過問題不大 ,多練習下就好
for a in objects:
if a in objects_2:
print("判定兩個列表中的相同部分")