0. 運算符與變量
- 數學運算符
| 符號 | 意義 | 例子 |
|---|---|---|
| + | 加 | 1+1=2 |
| - | 減 | 1-1=0 |
| * | 乘 | 2*3=6 |
| / | 除 | 8/4=2 |
| % | 取余 | 8%3=2 |
| // | 取商 | 10//3=3 |
| ** | 冪 | 2**3=8 |
-
變量
只包含 數字、字母、下劃線,以字母or下劃線開頭- 字符串方法
| 方法 | 意義 | 方法 | 意義 |
|---|---|---|---|
| rstrip() | 去除右側空白符 | strip() | 去除兩側空白符 |
| lstrip() | 去除左側空白符 | count(A) | 統(tǒng)計A出現的次數 |
| upper() | 字母全部大寫 | lower() | 字母全部小寫 |
| title() | 首字母大寫 | replace(A,B) | 用B代替字符串中的A |
1. 控制流
- if 語句
if 邏輯判斷1:
語句1
elif 邏輯判斷2:
語句2
else:
語句3
- while 語句
while True:
語句
- for 語句
for i in range(num1,num2):
語句
range方法包含num1,不包含num2
2. 函數
def function(a,b):
c= a ** b
return c
3. 文件讀寫
- open、close函數
text="PYTHON"
my_file= open('my file.txt','w')
my_file.write(text)
my_file.close()
- 采用with,無需close函數
with open("file.txt") as file_name:
file_name.read()
file_name.readline()
file_name.readlines()
with open("file.txt",'w') as file_name:
file_name.write("xxxx")
'w'--寫;'a'--追加;'r'--讀
content= filename.read()、filename.readline()、filename.readlines()
-
使用json模塊存儲數據
json.dump(data,f_obj)存儲數據:
import json
filename = 'number.json'
numbers = [1,2,3,4,5]
with open(filename,'w') as obj:
json.dump(numbers,obj)
json.load(data)讀取數據到內存中:
import json
filename = 'number.json'
with open(filename) as obj:
data =json.load(obj)
print(data)
數據導入
(1)excel形式:
import pandas as pd
d1 = pd.read_excel("D:\\MyPython\\DataAnalyseCM\\data_cjz.xlsx",sheetname=0)
d2 = pd.read_excel("D:\\MyPython\\DataAnalyseCM\\data_cjz.xlsx",sheetname=1)
d3 = pd.read_excel("D:\\MyPython\\DataAnalyseCM\\data_cjz.xlsx",sheetname=2)
(2)table形式:
from pandas import read_table
dat = read_excel("D://MyPython//DataAnalyseCM//data.txt")
(3)csv形式:
from pandas import read_csv
dat = read_excel("D://MyPython//DataAnalyseCM//data.csv")
數據導出
data.to_csv("D:\\Result.csv",index=False ,header=False)#data為處理后的dataframe數據
4. 數據結構
參考鏈接:
https://www.cnblogs.com/littlefivebolg/p/8982889.html
列表list
a = [1,3,4,7],a[0]
有序,可變(a.sort()),可刪除、增添、修改。字符串不可變
方法
del a[0]、a.remove(value)#刪除a中值為value的元素
a.pop(idx)#永久去除變量a中位置為idx處的數據,默認值為最后一個元素
a.append(data)、a.insert(1,0)#在位置1插入0元祖tuple
b = (1,3,5,7),b[1]
有序,不可變字典dictionary
鍵/值對無序,鍵唯一,d={key1:value1,key2:value2},d[key1]
del d[key1]
方法
d.items()、d.values()、d.keys()
字典列表、字典中存儲列表、字典中存儲字典序列
包含:列表、元組、字符串
返回的序列從開始位置開始 ,剛好在結束位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外
使用切片操作符來取得拷貝對象字符串
常用方法:d.startswith('Swa')、'a' in d、d.find('war') != -1
5. 面向對象的編程
-
定義
用稱為對象的東西包裹起來組織程序的方法。域和方法可以合稱為類的屬性。
class Calculator:
def __init__(self,name,price)
self.name = name
self.price = price
def add(self,x,y):
result= x + y
return result
實例化:cal = Calculator('Good Calculator',18)
兩種類型的域 ——類的變量和對象的變量
-
self參數
指向類的實例對象本身,而不是類本身;每個方法需定義一個self參數 -
__init__方法、__del__方法
在類的一個對象被建立/消逝時,馬上運行,對對象進行初始化/回收內存 -
繼承
使用方法:基本類作為一個元組跟在定義類之后。
基本類的__init__方法專門使用self變量調用,初始化對象的基本類部分。
class BasicMember:
def __init__(self,name):
self.name = name
class ExportMember(BasicMember):
def __init__(self,name,age):
#BasicMember.__init__(name)
super().__init__(name) # 初始化基本類的部分
self.age = age
多態(tài)現象:子類型(導出類/子類)可以被視作是父類(基本類/超類)的實例
6. 模塊安裝
- import Python包
import time as t
a = t.localtime()
from time import localtime
a = localtime()
-import 自己的模塊
文件需在同一目錄或python默認的安裝包所在目錄中
7. 異常
try:
語句
except 具體錯誤類型:
語句
else:
接下來要執(zhí)行的語句
8. 測試代碼
# test_yourfunc.py
import unittest
import yourfunc
class XTestCase(unittest.TestCase):
def test_name():
...
assertIn(item,list)
unittest.main() # 讓Python運行這個文件中的測試
- unittest中的斷言方法
| 方法 | 用途 |
|---|---|
| assertEqual(a, b) | 核實a == b |
| assertNotEqual(a, b) | 核實a != b |
| assertTrue(x) | 核實x為True |
| assertFalse(x) | 核實x為False |
| assertIn(item, list) | 核實item在list中 |
| assertNotIn(item, list) | 核實item不在list中 |
9. 其他
- zip、lanbda、map
a = [1,2,3]
b = [4,5,6]
for i,j in zip(a,b) # [(1,4),(2,5),(3,6)]
print i/2,2*j
zip返回地址值,查看內容可用list[zip(a,b)]
lambda x,y:x+y
等價于:
def func1(x,y)
return x+y
map(func1,[1,3],[2,5])
輸出3,8
map返回地址值,查看內容可用list
- copy & deepcopy
a = [1,3,[4,5]]
b = a # a,b指向同一地址
import copy
c = copy.copy(a) # 淺復制,僅復制第一層數據,a[2]與c[2]指向同一地址
d = copy.deepcopy(a) # 深復制,完全復制數據,改變a,不會改變d
- pickle模塊
import pickle
a_dict = {'asd':12,2:[1,5,4],'23':{2:3,'d':sad}}
file = open('example.packle','wb')
pickle.dump(a_dict,file)
file.close()
a_dict1 = pickle.load(file) # 將保存在pickle中的數據load
- 正則表達式RegEx
import re # 導入模塊
re.search(r"\bruns\b","dogs runs to cat")
\d : 任何數字
\D : 不是數字
\s : 任何 white space, 如 [\t\n\r\f\v]
\S : 不是 white space
\w : 任何大小寫字母, 數字和 “” [a-zA-Z0-9]
\W : 不是 \w
\b : 空白字符 (只在某個字的開頭或結尾)
\B : 空白字符 (不在某個字的開頭或結尾)
\ : 匹配
. : 匹配任何字符 (除了 \n)
^ : 匹配開頭
$ : 匹配結尾
? : 前面的字符可有可無
