Python學習筆記 CH1-4:從入門到列表

Python CH1 環境準備

  • 因為已經有了C/C++、Java的基礎,所以上手很快。

  • 參考書:Eric Matthes -《Python編程 從入門到實踐》

  • 環境準備:python3、PyCharm2020

  • 哪裡不會baidu/bilibili哪裡

  • 程式碼之道

    • 選擇簡單且行之有效的方案
    • 不因追求完美而忽略行之有效
    • 不要將問題太過複雜化
  • 想做的事

    1. 小遊戲-外星人入侵
    2. 數據可視化-打卡表

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) # 但元組可以重新賦值