【Python学习】 简单语法与常见错误(持续更新)
關(guān)于單引號和雙引號
當(dāng)輸出的字符串內(nèi)部沒有單引號的時候,外面可以用單引號, 但是如果內(nèi)部有了單引號,那么外部只能用雙引號。?
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print(dict) print ('dict[Name]: ', dict['Name']) print ("dict['Age']: ", dict['Age'])關(guān)于for循環(huán)
首先我們要知道 [1,2,3] 這樣,其實你是定義了一個list,關(guān)于list就像是C++STL里面的vector,可以append,只不過這里比他更強(qiáng)大的是,可以append各種類型的東西。
回歸正題,對于for循環(huán)遍歷,也是可以遍歷一個list中的所有元素的,那么關(guān)于遍歷的時候,就有了兩種寫法,下面分別介紹一下:(下面代碼中的兩種方式都是可以的)
fruits = ['banana', 'apple', 'mango']#方法1 for fruit in fruits:print(fruit)#方法2 for i in range(len(fruits)):print(fruits[i])?
numpy中np.array()與np.asarray的區(qū)別
array和asarray都可以將結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)化為ndarray,但是主要區(qū)別就是當(dāng)數(shù)據(jù)源是ndarray時,array仍然會copy出一個副本,占用新的內(nèi)存,但asarray不會。(所以一般都用array,因為他是真正的深復(fù)制)
具體區(qū)別可以看:鏈接
?
注意針對只有一個元素的情況時,1和1,的區(qū)別
這兩者是一樣的,都是int: (1) 1 這兩者是一樣的,都是tuple: (1,2,3) 1,2,3要是想創(chuàng)建一個只有一個元素的元組,那么需要在數(shù)字后面加逗號,比如這樣:
?
python中tuple、list以及array(numpy的數(shù)據(jù)格式)的相互轉(zhuǎn)換
python中常常需要實現(xiàn)tuple、list以及array數(shù)據(jù)類型之間的轉(zhuǎn)換,因為三者各有優(yōu)勢,tuple可以保證數(shù)據(jù)不易被修改;處理數(shù)據(jù)時,array數(shù)據(jù)類型可以方便地調(diào)用numpy包中的函數(shù)進(jìn)行數(shù)據(jù)處理,比如:求距離,最大值,平均值等常見操作;list可以方便的調(diào)用很多函數(shù),比如添加一個元素(append)等等。
如果轉(zhuǎn)換還是很方便的,只需要分別使用:
numpy包內(nèi)的函數(shù)np.array(),將任意類型轉(zhuǎn)換成array
內(nèi)置函數(shù)tuple()和list()也可以將任意類型轉(zhuǎn)成對應(yīng)的數(shù)據(jù)類型。
這里注意的是,np.array(被轉(zhuǎn)換的變量,dtype=數(shù)據(jù)類型)可以通過dtype屬性指定元素的數(shù)據(jù)類型
?
注意np.mat()和np.matrix()的區(qū)別
兩者只在傳入的參數(shù)是矩陣的時候有區(qū)別,其中前者是直接引用,后者是進(jìn)行深復(fù)制。
?
列表中冒號的用法([][:][::]的區(qū)別),列表切片詳解
沒有冒號:
其實就是[0,1]直接就是取第0行與第1列的交點(diǎn)值
一個冒號:
[x?: ] 代表列表中的索引的第x項到最后一項
[ : y] 代表列表中的第一項到索引第y+1項(也就是到第y項但是左閉右開)
兩個冒號:
list[start:end:step]
start:起始位置
end:結(jié)束位置
step:步長
?
在保存圖像的時候需要注意:
使用plt.savefig(‘a(chǎn).jpg’)保存圖片注意,一定要在plt.show()之前,plt.show()之后plt就成為一個空白圖像了,輸出路徑時要用/,用反斜杠的話會報錯
?
?
在Python3.0及以后版本中,' / ' 和 ' // ' 運(yùn)算符的區(qū)別
看下圖就明白了。(運(yùn)行環(huán)境Python3.7.4)
為了python簡明的特征,int和int的除法,就不需要先強(qiáng)轉(zhuǎn)成float了。
?
查看變量占用內(nèi)存大小?
import sys
a = [x for x in range(1000)]
print( sys.getsizeof(a) )
?
出現(xiàn)說語法格式不正確的錯誤
當(dāng)出現(xiàn)IndentationError: unindent does not match any outer indentation level這種錯誤的時候,但是空格都對齊了,這可能說明空格的格式不正確,所以你把所有的空格刪掉,再自己手動TAB一遍就可以了。
比如下面這段在spyder上是對齊的:
?但是實際拷貝出來:
for i in range(length):x.append(f"{station_info_dict['result']['buslines'][0]['busstops'][i]['location']}".split(",")[0])y.append(f"{station_info_dict['result']['buslines'][0]['busstops'][i]['location']}".split(",")[1])plots_name.append(f"{station_info_dict['result']['buslines'][0]['busstops'][i]['name']}")?
20200314
numpy.prod()函數(shù)
這個函數(shù)是連乘操作,將里面所有的元素相乘。
比如:a = numpy.array([1,2,3,4])
那么:numpy.prod(a) = 24
還有:numpy.prod(a[2:3]) = 3
同理:numpy.prod(a[1:3]) = 6
?
20200504
注意每次運(yùn)行代碼之前要清空已有變量!尤其是使用spyder這種工具的時候。
?
20200504?
注意多用切片那種形式獲取數(shù)據(jù)
比如你要獲取'hello'這個str的前三個字符這個子串,別再一個一個字符的append了,直接str[:3]就好了。提高效率和可讀性。
20200504
?查看x是否存在于list中
theList = ['a','b','c'] if 'a' in theList: print ('a in the list')?
?
?
?
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的【Python学习】 简单语法与常见错误(持续更新)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle行转列 case,Oracl
- 下一篇: docker安装与学习