本篇內容為個人之前所有學的python常用命令和函數(shù)的整理曹抬,后期會不斷更新。由于本人平時雙開急鳄,會同時包含python2和python3的命令谤民,同時會以 #py2 #py3的注釋注明, 沒有注明的就代表通用疾宏。
如果想py2 py3雙開的同學可以參考
刀客特鹿:Windows下Python 2.7和3.X 在同一臺電腦上共存(雙開)方法zhuanlan.zhihu.com
本位作為筆記整理张足,可能不像教材那樣邏輯清晰,建議搜索使用坎藐,如果要系統(tǒng)性的學習为牍,還是建議找專業(yè)的材料。
本文內容全為自己手動整理,當然參考多方資料吵聪,如有侵權凌那,或者需要添加相關參考鏈接,請聯(lián)系本人吟逝,本人一定會盡自己所能遵守每一位互聯(lián)網原創(chuàng)者的知識版權帽蝶。
本文參考網站 和學習資源推薦:
廖雪峰的官方網站
簡明Python教程
操作系統(tǒng) windows
IDE:pycharm
Python軟件安裝包:Anaconda
如果Python和pycharm都不會安裝的同學,請參考:
刀客特鹿:打開Python的優(yōu)雅姿勢——手把手教零基礎的你安裝python(Anaconda)zhuanlan.zhihu.com刀客特鹿:打開Python的優(yōu)雅姿勢——手把手教零基礎的你安裝python開發(fā)環(huán)IDE(Pycharm)zhuanlan.zhihu.com
統(tǒng)一程序的編碼:
# 因為python對中文字符串不是太友好块攒,一般都會在文件的首行定義編碼励稳。至于其中的原因,還希望大家自己去網上搜索答案囱井。初學者不理解也沒有關系驹尼,強行養(yǎng)成每次開篇打碼就把以下內容復制在首行就可以。
# encoding: utf-8# -*- coding: utf-8 -*-
# 以上兩種寫法的意思是一樣的庞呕,隨便哪種都可以新翎,意思都是指定本程序指定默認編碼 utf-8
當然,后續(xù)初學者還是會遇到很多編碼問題住练。這是一種挑戰(zhàn)地啰,也是一道門檻,鼓勵跨越讲逛。
有興趣的同學可以看廖老師的講解:
導入庫
import pandas import pandas as pdfrom Collecting_data import Collect_stock_data
# 從我自己寫的文件 Collecting_data作為函數(shù)導入
有些模塊內容比較豐富也會用到類似方法導入亏吝,如
from matplotlib.pyplot import plot
輸出打印:
## hellow world
# py2
print 'hellow world'
# py3
print('hellow word')
# 其實python2.7版本也支持print()的方式, 如果是初學者可以統(tǒng)一使用print()方式
# 輸出格式打印
a = 'Peter'
# py2
print "My name is:" + a
# py3
print("My name is:" + a)
# 多變量的輸出打印
a = 'Peter'b = 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這個命令盏混,多數(shù)情況下蔚鸥,區(qū)別就是加不加()。
占位符
%d int
%s str
%f float
%x 十六進制整數(shù)
輸入變量
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()
注釋
# 以 # 開頭的本行內容都為注釋
""" ... """ 以""" 開頭到 以"""結尾的多行內容都可以是注釋图焰。
數(shù)據類型和變量
數(shù)字變量
a = 100 # int 整型b = 18.88 # float 浮點數(shù)c = 3.14E10 # 科學計數(shù)法启盛,代表3.14*10~10次方
字符串 string
d = 'hellow world'? # 單引號,雙引號,三引號都可以蹦掐,引號內的可以是字母技羔, 單詞,語句卧抗。d = ”hellow world“d = '''hellow world'''
以上三種寫法效果一樣
轉義字符 \ %
e = 'I\'m \"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))
基本運算:
計算符號
算符是連接一個或多個元素的符號社裆,用來表達計算
常見的算術符號:+ - * / %
% 是取余數(shù)的操作拙绊,不是除法
9 % 3 == 0,9%2==1
注意:除法運算時 /
整除還是整,要得到小數(shù)标沪,需要用浮點數(shù)除整或者浮點數(shù)除浮點數(shù)
print(10 / 3)? # 整數(shù)除以整數(shù)榄攀,結果是整數(shù)3,而不是3.33333...print(10.0 / 3) # 小數(shù)除以整數(shù)金句,結果是浮點數(shù)檩赢,結果是3.33333...
自運算的快速寫法
num = 1num += 1? # 等價于 num = num + 1
# 在寫一個計數(shù)器的時候經常使用上面的操作
類似的還有
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開始順序計數(shù)
a[0] == 1,? a[2] == 3
切片賦值军浆,元素賦值
a[0] = 5,? a == [5, 2, 3, 4, 5]
反向切片
a[-1] == 5
多個元素切片
a[1:3] == [2, 3]? # 注意list的切片區(qū)間是開閉的,取前不取尾巴a[1:] == [2, 3, 4, 5]? #取出序號1以后所有的元素a[-1:] == 5? a[-2:] == [4, 5]a[ : 3]? == [1, 2, 3]
# 從這個結果可以看出 : 前面默認hi0挡闰, 后面默認的是len(list), 而且只能從坐向右取數(shù)
a[1:4:2] == [2, 4]? # 按范圍[1:4] 按步長2 取數(shù)
列表中可以同時放入多種變量類型
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
列表乘以數(shù)字 *
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()? # 默認從小到大排序簇抵,可以設置參數(shù)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
快速創(chuàng)建一個列表 range()
print(range(5))? # 輸出 [0, 1, 2, 3, 4]? # 從0開始計數(shù), 輸出5個數(shù)字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
字典是無序的數(shù)組税肪,所以不能切片操作。
取出列表中指定元素榜田,用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))
映射函數(shù) map(function, iterable)
function: 要重復運行的函數(shù)
iterable: 一個或多個序列(列表,元組辩块,集合)
對每個列表里的數(shù)組求平方:
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))
只有運行本程序時蛔六,才會運行以下函數(shù),如果作為庫被導入則不運行
if __name__ == '__main__':