資料結構
淺拷貝和深拷貝加減
乘除乘方取餘取整+
-*/**
%//與c++等程式語言不同之處在於python不需要預先設定資料型別,根據運算自動給定資料型別,這一點與matlab相似。
>>> 3**2 # **2 表示2次方
""""
9""""
>>> 10/4 # 除法自動賦值float型別
"""2.5
""">>> 8//3
"""2
"""
定義
python的函式定義規則與c++不同,通常以def開頭,引數中的第一項必須為self。
def add(self,a,b):
print('this is a add function')
c = a+b
print(c)
lambda
定義乙個簡單的函式,實現簡化**的功能。
fun = lambda x,y : x+y #冒號前的x,y為自變數,冒號後x+y為具體運算。
map
把函式和引數繫結在一起。
def fun(x,y):
return (x+y)
>>> list(map(fun,[1],[2]))
"""[3]
元組
用小括號、或者無括號來表述,是一連串有順序的數字。
a_tuple = (12, 3, 5, 15 , 6)
another_tuple = 12, 3, 5, 15 , 6
列表
以中括號來命名
a_list = [12, 3, 67, 7, 82]
字典
如果說list是有順序地輸出輸入的話,那麼字典的存檔形式則是無需順序的,字典是乙個無序的容器。
在字典中,有key和 value兩種元素,每乙個key對應乙個value, key是名字, value是內容。數字和字串都可以當做key或者value, 在同乙個字典中, 並不需要所有的key或value有相同的形式。 這樣說, list 可以說是一種key為有序數列的字典。
字典還可以以更多樣的形式出現,例如字典的元素可以是乙個list,或者再是乙個列表,再或者是乙個function。索引需要的專案時,只需要正確指定對應的key就可以了。
a_list = [1,2,3,4,5,6,7,8]
d2 =
d3 =
print(a_list[0]) # 1
del d1['pear']
d1['b'] = 20
set:最主要的功能就是尋找乙個句子或者乙個 list 當中不同的元素.定義好乙個 set 之後我們還可以對其新增需要的元素, 使用 add就能新增某個元素. 但是不是每乙個東西都能新增, 比如乙個列表.清除乙個元素可以用 remove 或者 discard, 而清除全部可以用 clear.
char_list = ['a', 'b', 'c', 'c', 'd', 'd', 'd']
print(set(char_list))
"""
zip
zip函式接受任意多個(包括0個和1個)序列作為引數,合併後返回乙個tuple列表
a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab)) #需要加list來視覺化這個功能
"""[(1, 4), (2, 5), (3, 6)]
"""
python中,物件的賦值,拷貝(深/淺拷貝)之間是有差異的,如果使用的時候不注意,就可能產生意外的結果。
id乙個物件的id值在cpython直譯器裡就代表它在記憶體中的位址
物件的賦值
物件的賦值就是物件的引用。
a=[1,2,3]
b=aa[1]=5
print(id(a)==id(b))
"""true
"""print(a,b)
"""[1, 5, 3] [1, 5, 3]
"""
淺拷貝copy
當使用淺拷貝時,python只是拷貝了最外圍的物件本身,內部的元素都只是拷貝了乙個引用而已。
import copy
a=[1,2,3]
c=copy.copy(a) #拷貝了a的外圍物件本身,
print(id(a)==id(c)) #id 改變 為false
"""false
"""c[1]=22222 #此時,我去改變c的第二個值時,a不會被改變。
print(a,c)
"""[1, 2, 3] [1, 22222, 3] #a值不變,c的第二個值變了,這就是copy和『=』的不同
"""
深拷貝deepcopy
deepcopy對外圍和內部元素都進行了拷貝物件本身,而不是物件的引用。
#copy.copy()
a=[1,2,[3,4]] #第三個值為列表[3,4],即內部元素
d=copy.copy(a) #淺拷貝a中的[3,4]內部元素的引用,非內部元素物件的本身
print(id(a)==id(d))
"""false
"""print(id(a[2])==id(d[2]))
"""true
"""a[2][0]=3333 #改變a中內部原屬列表中的第乙個值
print(d) #這時d中的列表元素也會被改變
"""[1, 2, [3333, 4]]
"""#copy.deepcopy()
e=copy.deepcopy(a) #e為深拷貝了a
a[2][0]=333 #改變a中內部元素列表第乙個的值
print(e)
[1, 2, [3333, 4]] #因為時深拷貝,這時e中內部元素列表的值不會因為a中的值改變而改變
>>>
快速上手python
python真的是很火啊,而且功能很強大。但是寫c寫習慣了,看到沒括號的真的難受。昨天寫了點matlab,然後今天配置了vscode,發現寫c有點手生了,看來還是要多練習。打算自己學一學py,把基礎語法搞一下,其他以後再說。for i in range a,b i從a到b的迴圈 執行語句while ...
Python快速上手(三)
這一節總結一下python在編碼當中的一些需要注意的地方 一.常用 1.print語句 在螢幕上橫向輸出指定的字元,如 print hello world 在互動式環境當中 是提示符,不是 的一部分。多個語句可以用逗號 隔開。如 print hello world 2.if語句 age 20 注意 ...
Python快速上手JSON指南
什麼是json?網上對json有很多教程,有各種各樣的解釋。一言以蔽之,json本質上是一種語法,這種語法的作用是把資料以字串的形式儲存 傳遞,多用於web程式設計。json的典型示例 以上面的典型示例為例子,employees 為key,後面的由3個字典組成的列表就為value.這就構成了乙份js...