“人生苦短,我用Python”,下面分享pyhton的一些基礎知識,學習中可以幫助快速入門
三元條件判斷的3種實現方法
C語言中有三元條件表達式,如 a>b?a:b,Python中沒有三目運算符(?:),但Python有它自己的方式來實現類似的功能。這裡介紹3種方法:
true_part if condition else false_part
a,b=2,3
c=a if a>b else b
a,b=2,1
c=a if a>b else b
>>> print c
利用
and-or條件判斷的特性來實現三元條件判斷首先介紹一下,and和or的用法:
python 中的and從左到右計算表達式,若所有值均為真,則返回最後一個值,若存在假,返回第一個假值。
無論是列表,元組還是字符串,空表示False,非空表示True
>>> 'python' and [] and (2,3)
[]
>>> 'python' and [2,3] and (3,4)
(3, 4)
·1
·2
·3
·4
·5
or也是從左到右計算表達式,存在真,則返回第一個為真的值,若均為假,則返回最後一個值。
>>> 'python' or [3,4] or ()
'python'
>>> '' or [] or ()
然後,我們利用and-or條件判斷的特性來實現三元條件判斷:
a,b=2,1
c = (a>b and [a] or [b])[0]
>>> print c
2
·1
·2
使用列表
a,b=2,7
c = [b,a][a>b]
>>> print c
7
·1
·2
分析:若a>b為真,由於真用1表示,因此相當於c=[b,a][1],即c=a
若a>b為假,由於假用0表示,因此相當於c=[b,a][0],即c=b
>>> int(False)
0
>>> int(True)
字典(dict)
以下問題都是在用Python寫KNN的時候遇到的:
dict_items()
python 字典(dict)的特點就是無序的,按照鍵(key)來提取相應值(value),如果我們需要字典按值排序的話,那可以用下面的方法來進行:
1 下面的是按照value的值從大到小的順序來排序。
dic = {‘a’:31, ‘bc’:5, ‘c’:3, ‘asd’:4, ‘aa’:74, ‘d’:0}
dict= sorted(dic.items(), key=lambda d:d[1], reverse = True)
print(dict)
輸出的結果:
[(‘aa’, 74), (‘a’, 31), (‘bc’, 5), (‘asd’, 4), (‘c’, 3), (‘d’, 0)]
下面我們分解下代碼:
print dic.items() 得到[(鍵,值)]的列表。
然後用sorted方法,通過key這個參數,指定排序是按照value,也就是元素d[1]的值來排序。reverse = True表示是需要翻轉的,默認是從小到大,翻轉的話,那就是從大到小。
2 對字典按鍵(key)排序:
dic = {‘a’:31, ‘bc’:5, ‘c’:3, ‘asd’:4, ‘aa’:74, ‘d’:0}
dict= sorted(dic.items(), key=lambda d:d[0])
print(dict)
dict_get()
dic = {‘a’:31, ‘bc’:5, ‘c’:3, ‘asd’:4, ‘aa’:74, ‘d’:0}
dic.get(‘a’,1)
31
dic.get(‘d’,1)
0
dic.get(‘f’,1)
1
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
如果k在字典中,返回D[k],即value值,否則返回d,d默認為None
Image和Ndarray互相轉換
import numpy as np
from PIL import Image
img = Image.open(filepath)
img_convert_ndarray = np.array(img)
ndarray_convert_img= Image.fromarray(img_convert_ndarray )
# np.array(object) 這個函數很強大啊,看源碼裡面給的註釋
# object : array_like
# An array, any object exposing the array interface, an object whose
# __array__ method returns an array, or any (nested) sequence.
Python統計列表中的重複項出現的次數的方法,是一個很實用的功能,適合Python初學者學習借鑑。具體方法如下:
對一個列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],現在我們需要統計這個列表裡的重複項,並且重複了幾次也要統計出來。
方法1
:[python] view plain copy
1.mylist = [1,2,2,2,2,3,3,3,4,4,4,4]
2.myset = set(mylist) #myset是另外一個列表,裡面的內容是mylist裡面的無重複項
3.for item in myset:
4.print("the %d has found %d" %(item,mylist.count(item)))
方法2:
[python] view plain copy
1.List=[1,2,2,2,2,3,3,3,4,4,4,4]
2.a = {}
3.for i in List:
4.if List.count(i)>1:
5. a[i] = List.count(i)
6.print (a)
利用字典的特性來實現。
方法3:
[python] view plain copy
1.>>> from collections import Counter
2.>>> Counter([1,2,2,2,2,3,3,3,4,4,4,4])
3.Counter({1: 5, 2: 3, 3: 2})
這裡再增補一個只用列表實現的方法:
[python] view plain copy
1.l=[1,4,2,4,2,2,5,2,6,3,3,6,3,6,6,3,3,3,7,8,9,8,7,0,7,1,2,4,7,8,9]
2.
3.count_times = []
4.for i in l :
5. count_times.append(l.count(i))
6.
7.m = max(count_times)
8.n = l.index(m)
9.
10. print (l[n])
其實現原理就是把列表中的每一個數出現的次數在其對應的位置記錄下來,然後用max求出出現次數最多的位置。
只用這段代碼的話,有一個缺點,如果有多個結果,最後的現實的結果只是出現在最左邊的那一個,不過解決方法也很簡單
感興趣的讀者可以動手實踐一下本文所述代碼,還可以對不足之處加以改進,使之功能更加完善。下面分享一個python經典入門、自學的需要學習的知識。本書是一本Python入門書籍,適合對計算機瞭解不多,沒有學過編程,但對編程感興趣的讀者學習使用。這本書以習題的方式引導讀者一步一步學習編程,從簡單的打印一直講到完整項目的實現,讓初學者從基礎的編程技術入手,最終體驗到軟件開發的基本過程。
《Python編程從入門到精通》
本書循序漸進、由淺入深地詳細講解了Python 3語言開發的核心技術,並通過具體實例的實現過程演練了各個知識點的具體使用流程。通過兩個綜合實例的實現過程,介紹了Python 3語言在綜合項目中的使用流程。全書內容循序漸進,以“技術解惑”和“範例演練”貫穿全書,引領讀者全面掌握Python 3語言。
好了,今天的知識就分享到這裡,歡迎關注愛編程的南風,私信關鍵詞:學習資料,獲取更多學習資源,如果文章對你有有幫助,請收藏關注,在今後與你分享更多學習python的文章。同時歡迎在下面評論區留言如何學習python。
閱讀更多 愛編程的南風 的文章