Python學習筆記 CH1-4:從入門到列表
Python CH1 環境準備
-
因為已經有了C/C++、Java的基礎,所以上手很快。
-
參考書:Eric Matthes -《Python編程 從入門到實踐》
-
環境準備:python3、PyCharm2020
-
哪裡不會baidu/bilibili哪裡
-
程式碼之道
- 選擇簡單且行之有效的方案
- 不因追求完美而忽略行之有效
- 不要將問題太過複雜化
-
想做的事
- 小遊戲-外星人入侵
- 數據可視化-打卡表
- …
Python CH2 變數及簡單數據類型
- 有點像web,變數存什麼,就是什麼類型。
- 不用定義數據類型,就很方便。
- 但是不同類型,要轉化為統一類型,再進行操作。
- 變數使用前,一定要賦值,哪怕是空。
2.1變數命名規範
- 字母、數字、下劃線,不以數字開頭
- 不能有空格
- 不能使用python關鍵字
- 名稱簡短且有描述性(可讀性 eg.name比n好,num比n好
- 慎用小寫l、大寫O
2.2 字元串及其處理
-
大小寫轉換
- 變數名.title() 單詞首字母大寫,其餘全小寫
- 變數名.upper() 全大寫
- 變數名.lower() 全小寫
-
合併字元串 字元串加法
-
關於空白
- 列印空白:空格、製表符、換行符…(space、\t、\n…)
- 刪除空白:(臨時的,如果想永久,重新賦值即可)
- 變數名.rstrip() 刪除串尾空白
- 變數名.lstrip() 刪除串首空白
- 變數名.strip() 刪除首尾空白
-
引號
正確使用引號,單/雙引號都可以保存串。
輸出引號需轉義。
2.3數值及其運算符
-
常規 “+, -, *, /, %, ()…” 都有
-
乘方 **
3**6 <==> 3的6次方
-
複合 +=, -=, …. 也都有
-
特殊
- python3中 取消1/2=0這種,直接1/2=0.5。但是以前的版本有
- 沒有++,–,^
-
str(數值) 轉換類型
數值與串不能直接操作,可將數值轉換成字元串類型
"Hello world, " + str(2319) ==> "Hello world, 2319"
2.4注釋
-
單行 #
-
可跨行 “”” 內容 “””
# 單行注釋 """ 三對引號 可以實現 跨行注釋 """
Python CH3 列表基礎
-
跟數組差不多
-
[] 中括弧表示列表
-
, 逗號分隔元素
-
names 常用單詞複數,命名列表
3.1訪問列表元素
- 列表名 訪問整個列表
- 列表名(索引) 訪問單個元素 (從0開始的列表索引)
- 索引為 -1 表示列末元素 (-2,-3依次類推,前提是列表得有足夠的元素
- 一定要避免索引錯誤!
fruits = ['蘋果', '香蕉', '梨']
print(fruits) # 列印結果:['蘋果', '香蕉', '梨']
print(fruits[2]) # 列印結果:梨
3.2增刪改
-
增
- append() 列尾添加
- insert() 指定位置添加
fruits = [] fruits.append('蘋果') fruits.append('香蕉') fruits.append('梨') fruits.append('草莓') # 向列尾添加元素 print(fruits) # 列印結果:['蘋果', '香蕉', '梨', '草莓'] fruits.insert(0,'西瓜') # 向列首(位置0)添加元素 print(fruits) # 列印結果:['西瓜', '蘋果', '香蕉', '梨', '草莓']
-
刪
- del語句 根據索引刪除
- remove() 根據內容刪除
- pop() 根據索引刪除
fruits = ['西瓜', '蘋果', '香蕉', '梨', '草莓'] del fruits[0] # 根據索引刪除 print(fruits) # 列印結果:['蘋果', '香蕉', '梨', '草莓'] fruits.pop() # 取出棧頂元素(最後一個元素) print(fruits) # 列印結果:['蘋果', '香蕉', '梨'] fruits.pop(0) # 根據索引刪除 print(fruits) # 列印結果:['香蕉', '梨'] fruits.remove('香蕉') # 根據內容刪除 print(fruits) # 列印結果:['梨']
-
改
給元素重新賦值
3.3 排序
-
sort() 升序排序(永久性排序,列表被改變)
- sorted() 臨時性排序,不改變列表
-
reverse() 倒置列表
-
len() 列表長度(數值類型)
numbers = [2, 3, 1, 9, 0, 7, 0, 2, 4] print(sorted(numbers)) # 列印結果 [0, 0, 1, 2, 2, 3, 4, 7, 9] print(numbers) # 列印結果 [2, 3, 1, 9, 0, 7, 0, 2, 4] numbers.sort() # 永久升序 print(numbers) # 列印結果 [0, 0, 1, 2, 2, 3, 4, 7, 9] numbers.sort(reverse = True) # 永久降序 print(numbers) # 列印結果 [9, 7, 4, 3, 2, 2, 1, 0, 0] numbers.reverse() # 倒置列表 print(numbers) # 列印結果 [0, 0, 1, 2, 2, 3, 4, 7, 9] print(len(numbers)) # 列表長度,列印結果:9
Python CH4 列表進階:循環遍歷
- 潛規則:for循環遍歷+基本操作,while循環條件操作
- 沒有循環變數,可以有循環條件
4.1for循環
- for … in … :
- 冒號 (不要遺忘)
- 縮進 (python以縮進區分程式碼塊,後面if、while等也是如此
- 不要遺漏/錯誤縮進
# 通式
for xx in xxs :
do something
fruits = ['蘋果', '香蕉', '梨']
for fruit in fruits :
print(fruit)
print("Circulation out.")
"""列印結果
蘋果
香蕉
梨
Circulation out.
"""
4.2 range() + for
- range() 生成一系列的數字
numbers = []
for number in range(1,5): # [1, 5) python的規則,不包含後邊一個數
numbers.append(number)
print(number)
print(numbers)
"""output
1
2
3
4
[1, 2, 3, 4]
"""
4.3 數值列表簡單統計計算
-
min() 最小
-
max() 最大
-
sum() 求和
numbers = [1, 2, 3, 4]
print(min(numbers)) # 1
print(max(numbers)) # 4
print(sum(numbers)) # 10
4.4列表解析
- 簡化4.2的程式碼
# 普通的range()生成[1,10]的平方
numbers = []
for value in range(1,11):
number = value**2 # ** 表示乘方
numbers.append(number)
print(numbers)
# 列表解析 生成[1,10]的平方
numbers = (number**2 for value in range(1, 11))
print(numbers)
4.5 切片:處理部分元素
- 切片:提取你想看到/想操作的元素
- [start_index : end_index]
- 規則,不包含後面的索引
- []中括弧 :冒號
nums = [0, 1, 2, 3, 4] # 切片:根據需求取出想看到的元素
print(nums[0:3]) # [0, 1, 2] 一共三個元素,從0開始
print(nums[:3]) # [0, 1, 2] 預設start_index,默認從0開始
print(nums[2:]) # [2, 3, 4] 預設end_index,默認讀到末尾
print(nums[2:5]) # [2, 3, 4] 從start_index開始,但不包含end_index
print(nums[-3:]) # [2, 3, 4] 負索引,列表的後幾項元素
print(nums[:]) # 都預設,表全部 [0, 1, 2, 3, 4]
遍歷切片
nums = [0, 1, 2, 3, 4] # 切片:根據需求取出想看到的元素
for num in nums[:3]: # 遍歷列印,列表前三個元素
print(num) # 0 1 2 (其餘遍歷以此類推)
複製列表
nums = [0, 1, 2, 3, 4]
nums_1 = nums # 錯誤,不可行
nums_1 = nums[:] # 正確,這樣才對!!!
# 部分複製,也用切片
4.6 元組:特殊的列表
- 元組,元素不可改
- () 圓括弧 ,逗號
- 其餘和列表一樣
- 想要修改元組的內容,只有對整個元組重新賦值
- append()、sort()…仍然適用
nums = (0, 1, 2, 3, 4)
nums[0] = 2319 # 程式終止,元組的元素,不可單獨修改
nums = (5, 6, 7, 8, 9) # 但元組可以重新賦值