Python基礎#常用命令和函數

本篇內容為個人之前所有學的python常用命令和函數的整理,後期會不斷更新。由於本人平時雙開,會同時包含python2和python3的命令,同時會以 #py2 #py3的注釋註明, 沒有註明的就代表通用。

如果想py2 py3雙開的同學可以參考

刀客特鹿:Windows下Python 2.7和3.X 在同一台電腦上共存(雙開)方法?

zhuanlan.zhihu.com圖標

本位作為筆記整理,可能不像教材那樣邏輯清晰,建議搜索使用,如果要系統性的學習,還是建議找專業的材料。

本文內容全為自己手動整理,當然參考多方資料,如有侵權,或者需要添加相關參考鏈接,請聯繫本人,本人一定會盡自己所能遵守每一位互聯網原創者的知識版權。

本文參考網站 和學習資源推薦:

廖雪峰的官方網站

Python教程?

www.liaoxuefeng.com圖標

簡明Python教程

簡明 Python 教程?

www.kuqin.com

操作系統 windows

IDE:pycharm

Python軟體安裝包:Anaconda

如果Python和pycharm都不會安裝的同學,請參考:

刀客特鹿:打開Python的優雅姿勢——手把手教零基礎的你安裝python(Anaconda)?

zhuanlan.zhihu.com圖標刀客特鹿:打開Python的優雅姿勢——手把手教零基礎的你安裝python開發環IDE(Pycharm)?

zhuanlan.zhihu.com圖標

統一程序的編碼:

# 因為python對中文字元串不是太友好,一般都會在文件的首行定義編碼。至於其中的原因,還希望大家自己去網上搜索答案。初學者不理解也沒有關係,強行養成每次開篇打碼就把以下內容複製在首行就可以。

# encoding: utf-8# -*- coding: utf-8 -*-

# 以上兩種寫法的意思是一樣的,隨便哪種都可以,意思都是指定本程序指定默認編碼 utf-8

當然,後續初學者還是會遇到很多編碼問題。這是一種挑戰,也是一道門檻,鼓勵跨越。

有興趣的同學可以看廖老師的講解:

字元串和編碼?

www.liaoxuefeng.com圖標

導入庫

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__:

推薦閱讀:

TAG:Python | Python入門 |