python代码评测结果tle_Python的备忘细节小抄
最近無(wú)論是自己寫(xiě)程序還是看別人的開(kāi)源程序,經(jīng)常發(fā)現(xiàn)自己遺忘一些基本的Python知識(shí),還得到網(wǎng)上查。遂抽出兩天時(shí)間,復(fù)習(xí)(yu xi)python,把自己老容易忘掉的知識(shí)點(diǎn)總結(jié)成這個(gè)小抄的形式~
畫(huà)圖 Plot與Matplotlib 基礎(chǔ)
Python提供了一個(gè)很像MATLAB的繪圖接口。
from numpy import array
from matplotlib.pyplot import plot
a = array([1, 2, 3, 4, 5, 6, 7, 8])
plot(a, a**2)
plot(y)
plot(x, y) plot(x, y, format_string)
只給定 y 值,默認(rèn)以下標(biāo)為 x 軸:
%matplotlib inline
x = linspace(0, 2 * pi, 50)
plot(sin(x))
plot(x, sin(x))
plot(x, sin(x),
x, sin(2 * x))
plot(x, sin(x), 'b-o',
x, sin(2 * x), 'r-^')
散點(diǎn)圖
scatter(x, sin(x))
直方圖
從高斯分布隨機(jī)生成1000個(gè)點(diǎn)得到的直方圖:
hist(randn(1000))
文件操作 File IO
寫(xiě)文件
f = open('路徑', 'w')
f.write('1 2 3 4\n')
f.write('2 3 4 5\n')
f.close()
讀文件
f = open('路徑')
data = []
for line in f:
data.append([field for field in line.split()])
f.close()
data
輸出結(jié)果
[['1', '2', '3', '4'], ['2', '3', '4', '5']]
注:Python中有一種叫做列表推導(dǎo)式(List comprehension)的用法
numbers = [int(field) for field in fields]
numbers
輸出結(jié)果:[1, 2, 3, 4, 5]
刪除文件:
import os
os.remove('路徑')
類(lèi) Class
用class來(lái)定義一個(gè)類(lèi)。 Person(object)表示繼承自object類(lèi); __init__函數(shù)用來(lái)初始化對(duì)象; self表示對(duì)象自身,類(lèi)似于CJava里面this。
class Person(object):
def __init__(self, first, last, age):
self.first = first
self.last = last
self.age = age
def full_name(self):
return self.first + ' ' + self.last
這就涉及到為什么要用類(lèi)與對(duì)象,我們可以使用人的那個(gè)類(lèi),造出好多不同的人(對(duì)象)。
Mertle = Person('Mertle', 'Sedgewick', 52)
Tom = Person('Tom', 'Swift', 28)
Tom.age
結(jié)果輸出28,同理你可以得到任何已知對(duì)象的任何信息。
改變列表的方法
l.append(ob) 將元素 ob 添加到列表 l 的最后。
a = [10, 11, 12]
a.append(11)
print a
輸出:[10, 11, 12, 11]
a.append([11, 12])
print a
輸出:[10, 11, 12, 11, [11, 12]]
向列表添加序列:l.extend(lst) 將序列 lst 的元素依次添加到列表 l 的最后,作用相當(dāng)于 l += lst。
a = [10, 11, 12, 11]
a.extend([1, 2])
print a
輸出:[10, 11, 12, 11, 1, 2]
插入元素:l.insert(idx, ob) 在索引 idx 處插入 ob ,之后的元素依次后移。
a = [10, 11, 12, 13, 11]
# 在索引 3 插入 'a'
a.insert(1, 'a')
print (a)
輸出:[10, 'a', 11, 12, 13, 11]
移除元素:l.remove(ob) 會(huì)將列表中第一個(gè)出現(xiàn)的 ob 刪除,如果 ob 不在 l 中會(huì)報(bào)錯(cuò)。
a = [10, 11, 12, 13, 11]
# 移除了第一個(gè) 11
a.remove(11)
print a
輸出:[10, 12, 13, 11]
彈出元素:l.pop(idx) 會(huì)將索引 idx 處的元素刪除,并返回這個(gè)元素。
a = [10, 11, 12, 13, 11]
a.pop(2)
輸出:12
排序l.sort() 會(huì)將列表中的元素按照一定的規(guī)則排序。
列表反向l.reverse() 會(huì)將列表中的元素從后向前排列。
continue 語(yǔ)句與break 語(yǔ)句
遇到 continue 的時(shí)候,程序會(huì)返回到循環(huán)的最開(kāi)始重新執(zhí)行。
例如在循環(huán)中忽略一些特定的值:
values = [7, 6, 4, 7, 19, 2, 1]
for i in values:
if i % 2 != 0:
# 忽略奇數(shù)
continue
print (i/2)
輸出為:
3.0
2.0
1.0
遇到 break 的時(shí)候,程序會(huì)跳出循環(huán),不管循環(huán)條件是不是滿(mǎn)足。
函數(shù)接收不定參數(shù)
使用如下方法,可以使函數(shù)接受不定數(shù)目的參數(shù):
def add(x, *args):
total = x
for arg in args:
total += arg
return total
add(1,2,3,4)
輸出為:10
通過(guò) map 的方式利用函數(shù)來(lái)生成序列
def sqr(x):
return x ** 2
a = [2,3,4]
print map(sqr, a)
輸出為:[4, 9, 16]
其用法為:
map(aFun, aSeq)
將函數(shù) aFun 應(yīng)用到序列 aSeq 上的每一個(gè)元素上,返回一個(gè)列表,不管這個(gè)序列原來(lái)是什么類(lèi)型。
事實(shí)上,根據(jù)函數(shù)參數(shù)的多少,map 可以接受多組序列,將其對(duì)應(yīng)的元素作為參數(shù)傳入函數(shù)。
__name__ 屬性
有時(shí)候我們想將一個(gè) .py 文件既當(dāng)作腳本,又能當(dāng)作模塊用,這個(gè)時(shí)候可以使用 __name__ 這個(gè)屬性。
只有當(dāng)文件被當(dāng)作腳本執(zhí)行的時(shí)候, __name__的值才會(huì)是 '__main__',所以我們可以
%%writefile ex2.py
PI = 3.1416
def sum(lst):
""" Sum the values in a list
"""
tot = 0
for value in lst:
tot = tot + value
return tot
def add(x, y):
" Add two values."
a = x + y
return a
def test():
w = [0,1,2,3]
assert(sum(w) == 6)
print ('test passed.')
if __name__ == '__main__':
test()
運(yùn)行文件:
%run ex2.py
輸出:test passed.
當(dāng)作模塊導(dǎo)入, test() 不會(huì)執(zhí)行:
import ex2
但是可以使用其中的變量:
ex2.PI
輸出:3.1416
也可以從模塊中導(dǎo)入變量:
from ex2 import add, PI
使用 from 后,可以直接使用 add , PI
try & except 塊
寫(xiě)代碼的時(shí)候,出現(xiàn)錯(cuò)誤必不可免,即使代碼沒(méi)有問(wèn)題,也可能遇到別的問(wèn)題。一旦報(bào)錯(cuò),程序就會(huì)停止執(zhí)行,如果不希望程序停止執(zhí)行,那么我們可以添加一對(duì) try & except:
import math
while True:
try:
text = raw_input('> ')
if text[0] == 'q':
break
x = float(text)
y = 1 / math.log10(x)
print "log10({0}) = {1}".format(x, y)
except ValueError:
print "the value must be greater than 0"
except ZeroDivisionError:
print "the value must not be 1"
except Exception:
print "unexpected error"
except后面跟著錯(cuò)誤類(lèi)型,如果有該錯(cuò)誤,則執(zhí)行其后語(yǔ)句。
try/catch 塊還有一個(gè)可選的關(guān)鍵詞 finally。
不管 try 塊有沒(méi)有異常, finally 塊的內(nèi)容總是會(huì)被執(zhí)行,而且會(huì)在拋出異常前執(zhí)行,因此可以用來(lái)作為安全保證,比如確保打開(kāi)的文件被關(guān)閉。
try:
print 1
finally:
print 'finally was called.'
輸出:
1
finally was called.
numpy畫(huà)圖
linspace 用來(lái)生成一組等間隔的數(shù)據(jù):
a = linspace(0, 2*pi, 21)
%precision 3
a
輸出
array([0. , 0.314, 0.628, 0.942, 1.257, 1.571, 1.885, 2.199, 2.513,
2.827, 3.142, 3.456, 3.77 , 4.084, 4.398, 4.712, 5.027, 5.341,
5.655, 5.969, 6.283])
三角函數(shù),作圖
b = sin(a)
%matplotlib inline
plot(a, b)
數(shù)組求和
a = array([[1,2,3],
[4,5,6]])
sum(a)
輸出21
指定求和的維度:
沿著第一維求和:
sum(a, axis=0)
輸出:array([5, 7, 9])
沿著第二維求和
sum(a, axis=1)
輸出:array([ 6, 15])
沿著最后一維求和
sum(a, axis=-1)
輸出:array([ 6, 15])
求最大最小值的位置
a.argmin()
輸出0
近似到一位小數(shù):
round方法
a = array([1.35, 2.5, 1.5])
a.round()
輸出:array([ 1., 2., 2.])
a.round(decimals=1)
輸出:array([ 1.4, 2.5, 1.5])
總結(jié)
以上是生活随笔為你收集整理的python代码评测结果tle_Python的备忘细节小抄的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 部署node_如何使用 docker 高
- 下一篇: 工具用途_德普优化使用指南:16个工具的