沒有任何順序,只是在寫了一個demo後,總結了一些有趣或者很有用的東西
1、全局變量 局部變量
首先,基礎變量,如int類型,str類型,都有基礎變量和全部變量的區分。一般的變量,都是局部變量,但是如果你想要在一個函數中統計一些數據,然後在主函數使用,應該用全部變量
eg:
def fun():
global NNNum
NNNum+=1
NNNum=0
fun()
fun()
print(NNNum)
#NNNum=2
而list ,dict是不區分局部變量和全局變量的,全局唯一2、參數中或者函數中有list或者dict
使用copy,除非任務如此,否則儘量不要修改原內容
簡單的複製:
A=[1,2,3]
C=A #淺複製
B=A[:] #深複製
B.append(4)
print(A) #A=[1,2,3]
C.append(4)
print(A) ##A=[1,2,3,4]
3、讀取一個目錄下的
import os #引入os庫
files = os.listdir(filepath)#使用os.listdir讀取到一個目錄下面所有的文件名
s = []
fileNum = 0#
# 每一篇文章
for file in files:#循環讀出,每一個文件
if not os.path.isdir(file):#以下6行是判斷邊界,可讀取想要讀取的文件
if fileNum < fist:
pass
else:
if fileNum == last:
break
else:
fd = open(filepath + file, 'r', encoding='utf-8', errors="ignore")#打開文件
iter_i = iter(fd)#讀取
sstr = ''
for line in iter_i:
sstr += line
# juzhen_init(sstr)
s.append(sstr)
fd.close()#關閉
fileNum += 1
4、sorted#對list排序很簡單,但是對dict排序會有一些注意的
eg:對dictS進行排序(按照value)
dictSort = sorted(dictS.items(), key=lambda x: x[1], reverse=True)
5、列表解析A=[ i for i in dictAllSort if i[1]>20]
listKey=[i[0] for i in Tota]
6、二維數組初始化juzhen = [[0 for i in range(row_num)] for j in range(col_num)]
複製一個二維數組:dataList = [[juzhen[j][i] for i in range(len(juzhen[0]))] for j in range(len(juzhen))]
7、pickle如何在幾個文件中互相使用變量
1、import或者from *** import ***
2、使用一個比較大的結構
eg:
#保存
fw = open('./txt/tree.txt', 'wb')
# pickle的dump函數將決策樹寫入文件中
pickle.dump(Tr, fw)
# 寫完成後關閉文件
fw.close()
#讀取:
filename='./txt/tree.txt'
fr=open(filename,'rb')
Tr=pickle.load(fr)
fr.close()
8、統計數量 dictS = {}
#global totalT
for eachTxt in listS:
# print("eachTxt: ",eachTxt)
for fenci in eachTxt:
# print("fenci: ",fenci)
if fenci in dictS:
dictS[fenci] += 1
else:
dictS[fenci] = 1
9、 類class Tree:
def createTree(self, dataSet, labels, depth):#一定要有self
#如果在類內使用其他函數,則格式爲self.func()
self.calcShannon( dataSet)
def calcShannon(self, dataSet):