Python基礎#常用命令和函數
本篇內容為個人之前所有學的python常用命令和函數的整理,後期會不斷更新。由於本人平時雙開,會同時包含python2和python3的命令,同時會以 #py2 #py3的注釋註明, 沒有註明的就代表通用。
如果想py2 py3雙開的同學可以參考
刀客特鹿:Windows下Python 2.7和3.X 在同一台電腦上共存(雙開)方法本位作為筆記整理,可能不像教材那樣邏輯清晰,建議搜索使用,如果要系統性的學習,還是建議找專業的材料。
本文內容全為自己手動整理,當然參考多方資料,如有侵權,或者需要添加相關參考鏈接,請聯繫本人,本人一定會盡自己所能遵守每一位互聯網原創者的知識版權。
本文參考網站 和學習資源推薦:
廖雪峰的官方網站
Python教程簡明Python教程
簡明 Python 教程操作系統 windows
IDE:pycharm
Python軟體安裝包:Anaconda
如果Python和pycharm都不會安裝的同學,請參考:
刀客特鹿:打開Python的優雅姿勢——手把手教零基礎的你安裝python(Anaconda)刀客特鹿:打開Python的優雅姿勢——手把手教零基礎的你安裝python開發環IDE(Pycharm)統一程序的編碼:
# 因為python對中文字元串不是太友好,一般都會在文件的首行定義編碼。至於其中的原因,還希望大家自己去網上搜索答案。初學者不理解也沒有關係,強行養成每次開篇打碼就把以下內容複製在首行就可以。
# encoding: utf-8# -*- coding: utf-8 -*-
# 以上兩種寫法的意思是一樣的,隨便哪種都可以,意思都是指定本程序指定默認編碼 utf-8
當然,後續初學者還是會遇到很多編碼問題。這是一種挑戰,也是一道門檻,鼓勵跨越。
有興趣的同學可以看廖老師的講解:
字元串和編碼導入庫
import pandas import pandas as pdfrom Collecting_data import Collect_stock_data
# 從我自己寫的文件 Collecting_data作為函數導入
有些模塊內容比較豐富也會用到類似方法導入,如
from matplotlib.pyplot import plot
輸出列印:
## hellow world
# py2
print hellow world
# py3
print(hellow word)
# 其實python2.7版本也支持print()的方式, 如果是初學者可以統一使用print()方式
# 輸出格式列印
a = Peter
# py2
print "My name is:" + a
# py3
print("My name is:" + a)
# 多變數的輸出列印
a = Peterb = 1c = 17.4576
# py2
print a + has + str(b) + book which is cost + str(c) + yuan.print"%s has %d book which is cost %.2f yuan." % (a, b, c)print "{} has {} book which is cost {} yuan.".format(a, str(b), float(c))
# py3
print(a + has + str(b) + book which is cost + str(c) + yuan.)print("%s has %d book which is cost %.2f yuan." % (a, b, c))print("{} has {} book which is cost {} yuan.".format(a, str(b), float(c)))
輸出
# 從上面的代碼可以看出,py2 和 py3 對於print這個命令,多數情況下,區別就是加不加()。
佔位符
%d int
%s str
%f float
%x 十六進位整數
輸入變數
name = input()print(name)
還是用上面的案例
a = input()b = 1c = 17.4576print(a + has + str(b) + book which is cost + str(c) + yuan.)print("%s has %d book which is cost %.2f yuan." % (a, b, c))print("{} has {} book which is cost {} yuan.".format(a, str(b), float(c)))
在pycharm的終端輸入 你想設置的名字
# input()在py2和py3里的差異是,py2里要輸入Lilith, py3里只要輸入Lilith,也就是說py2里input()輸入的變數類型要自己定義,而py3里則默認為str格式
終止運行程序
exit()
注釋
# 以 # 開頭的本行內容都為注釋
""" ... """ 以""" 開頭到 以"""結尾的多行內容都可以是注釋。
數據類型和變數
數字變數
a = 100 # int 整型b = 18.88 # float 浮點數c = 3.14E10 # 科學計數法,代表3.14*10~10次方
字元串 string
d = hellow world # 單引號,雙引號,三引號都可以,引號內的可以是字母, 單詞,語句。d = 」hellow world「d = hellow world
以上三種寫法效果一樣
轉義字元 %
e = Im "OK"! # 通常用來輸出 引號 這類有特殊意義的符號f = 100.00print(Percentage is %f%% % (float(f))) # 第二個%是轉義字元,第三個%是要輸出的內容
布爾值, bool:
True
False
空值
None
查看變數類型 type()
a = Peter
b = 1
c = 17.4576
d = True
e = None
print(type(a), type(b), type(c), type(d), type(e))
基本運算:
計算符號
算符是連接一個或多個元素的符號,用來表達計算
常見的算術符號:+ - * / %
% 是取餘數的操作,不是除法
9 % 3 == 0,9%2==1
注意:除法運算時 /
整除還是整,要得到小數,需要用浮點數除整或者浮點數除浮點數
print(10 / 3) # 整數除以整數,結果是整數3,而不是3.33333...print(10.0 / 3) # 小數除以整數,結果是浮點數,結果是3.33333...
自運算的快速寫法
num = 1num += 1 # 等價於 num = num + 1
# 在寫一個計數器的時候經常使用上面的操作
類似的還有
num -= 1num *= 2num /= 3
比較運算符:
>, <, >=, <=, ==, !=(不等於)
返回的是布爾值
布爾運算符:
and, or, &, |
and 等價於 &
or 等價於 |
作用是 布爾值比較
# 建議盡量使用 & | 表達邏輯關係,因為在很多情況下,如pandas的dataframe中用and和or是無法識別邏輯關係的。
列表 list[] 操作
list是一種有序的集合,可以隨時添加和刪除其中的元素。
定義一個列表
a = [1, 2 ,3 , 4, 5]
有序的概念
b = [5, 4, 3, 2, 1]a ! = b # 輸出 True
列表長度 len()
len(a) == 5
切片操作
列表內的元素從0開始順序計數
a[0] == 1, a[2] == 3
切片賦值,元素賦值
a[0] = 5, a == [5, 2, 3, 4, 5]
反向切片
a[-1] == 5
多個元素切片
a[1:3] == [2, 3] # 注意list的切片區間是開閉的,取前不取尾巴a[1:] == [2, 3, 4, 5] #取出序號1以後所有的元素a[-1:] == 5 a[-2:] == [4, 5]a[ : 3] == [1, 2, 3]
# 從這個結果可以看出 : 前面默認hi0, 後面默認的是len(list), 而且只能從坐向右取數
a[1:4:2] == [2, 4] # 按範圍[1:4] 按步長2 取數
列表中可以同時放入多種變數類型
b = [1, a, 2.44, 5E10, name ]
列表的相加(合併)
c = a + bc = a.extend(b)
輸出:[1, 2, 3, 4, 5, 1, a, 2.44, 50000000000.0, name]
這種操作類似 a.extend(b) print(a) 注意:c = a.extend(b) 結果是None
另外對列表中的元素對應求和操作需要for 或者itertools
列表乘以數字 *
print(a*3)
輸出:[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
列表添加列表 extend()
a.extend(b)
輸出:[1, 2, 3, 4, 5, 1, a, 2.44, 50000000000.0, name]
列表添加元素 append()
a.append(b)
輸出:[1, 2, 3, 4, 5, [1, a, 2.44, 50000000000.0, name]]
append是將一個列表作為一個元素塞入原始列表中
列表刪除元素 remove()
a.remove(3)a.remove(a[2])
只能刪除單個元素
列表的插入 insert(index, value)
a.insert(1,Second)print(a)
輸出 [1, Second, 2, 3, 4, 5]
列表的反轉,倒敘,排序操作
反轉,倒敘 reverse()
a.reverse()
排序 sort()
a.sort() # 默認從小到大排序,可以設置參數reverse=True, 效果就和reverse()一樣了b.sort() # 如果有字元串也能排序print(b)
輸出:[1, 2.44, 50000000000.0, a, name]
列表查詢,元素定位 list.index()
print(a.index(4))
輸出:3
如果一個列表裡有兩個相同的元素,只會輸出第一個元素在列表裡的位置(序號)
a = [5, 2, 3, 4, 5]print(a.index(5))
輸出:0
快速創建一個列表 range()
print(range(5)) # 輸出 [0, 1, 2, 3, 4] # 從0開始計數, 輸出5個數字print(range(1:10)) # 輸出 [1, 2, 3, 4, 5, 6, 7, 8, 9]print(range(1: 10: 2)) # 輸出[1, 3, 5, 7, 9] # 從1到10,步長為2
列表的最大值 max(), 最小值min()
print(max(a)) 輸出: 5print(min(a)) 輸出:1
判斷某個元素是否在列表中,in
print(0 in a) # 輸出:Falseprint(1 in a) # 輸出: Trueprint(0 not in a) # 輸出: Trueprint(1 not in a) # 輸出:False
元組 tuple ()
另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改。 所有的操作
可以參考列表list的操作
集合set
無序的列表集合,且不能有重複值,可以用作自動去重
d = set([1,2,3,3])e = set([3,2,1])print(d == e)
輸出: True
註:對於set的理解,廖雪峰老師的原文:set和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key。
而我個人覺得把set 和 list, tuple 歸為一類更好理解。因為無序,所以集合不能切片操作,如果要結合向列表list那樣操作,可以用list(d)再轉成列表
集合添加元素 add.
d.add(4)
集合刪除元素 remove
d.remove(3)
字典dict {}
Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度。
d = {Michael: 95, Bob: 75, Tracy: 85}d[Michael]
輸出 95
字典是無序的數組,所以不能切片操作。
取出列表中指定元素,用get, 或者直接用key值
d[Michael] # 輸出 95d.get(Michael) # 輸出 95
判斷key值是否存在 in 注意:這個方法只能判斷key值,不能判斷value
print(Michael in d) # 輸出 Trueprint(95 in d) # 輸出 False
字典的賦值,修改元素
d[Michael] = 20print(d)
輸出 {Bob: 75, Michael: 20, Tracy: 85}
添加元素,通過賦值的方法可以直接添加元素
d[Ella] = 20print(d)
輸出 {Bob: 75, Ella: 20, Michael: 95, Tracy: 85}
輸出字典的key值
print(d.keys())
輸出字典的value值
print(d.values())
將兩個列表組合成一個dict, map()
names = [Michael, Bob, Tracy]scores = [95, 75, 85]d = dict(map(lambda x,y:[x,y], names,scores))
映射函數 map(function, iterable)
function: 要重複運行的函數
iterable: 一個或多個序列(列表,元組,集合)
對每個列表裡的數組求平方:
def square(x):return x*xprint(map(square, [1,2,3,4,5]))
也可以寫成
print(map(lambda x: x*x, [1,2,3,4,5]))
兩個列表的元素相加求和
a = [1, 2, 4, 5, 6]b = [4, 5, 6, 7, 8]print(map(lambda x,y: x+y, a,b))
但是以下的寫法是錯誤的
print(map(sum,a,b))
只有運行本程序時,才會運行以下函數,如果作為庫被導入則不運行
if __name__ == __main__:
推薦閱讀: