1. 程式人生 > >python基礎知識點:與java類比

python基礎知識點:與java類比

1.特點:優雅,明確,簡單

2.適合的領域

A.web網站和各種網路服務

B.系統工具和指令碼

C.作為膠水語言把其他語言開發的模組包裝起來方便實用

3.不適合的領域

貼近硬體的程式碼(首選C)

移動開發

遊戲開發:(c,C++)

4.對比


雖然執行速度慢:但是現在CPU的計算能力很強大,因此本身的影響不大,瓶頸在於頻寬和資料庫的訪問,這些問題每個語言都會遇到

5.安裝Pytlhon(跨平臺)

  2.73.3 不相容:因為一些第三方庫不相容3.3版本

官網:www.python.org 選擇對應的平臺進行下載

Windows64位下載:

下載完成後傻瓜式安裝

然後配置Python.exe進行環境變數的配置

開啟CMD 輸入python


以下為總結的與java不同的基礎知識點

1.字串

用’’或者””表示

‘Learn “列印雙引號”’  

“python’列印單引號’”  

‘learn\’單引號\’\”雙引號\”’

\\表示\本身

\n換行

\t 表示一個製表符

包含很多轉義符: r’\(--)/\(--)/’

多行字串 ‘’’第一行

第二行

第三行’’’

Unicode表示:u’中文’

2.布林為TrueFalse 首字母大寫 0、空字串''None看成 False,其他數值和非空字串都看成 True

3.空值 表示為None

4.and,or,not 具有短路運算特性

5.Print列印語句

print ‘hello world’,100+100
	hello world 200  #執行結果 , 會變成一個空格 #為註釋

6.如果出現UnicodeDecodeError 是因為.py檔案儲存的格式有問題,可以在檔案的第一行添加註釋

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


目的是告訴

python直譯器,Utf-8編碼讀取原始碼 

7.list 有序集合

	_list = [1,1.0,True,'hello']
	print _list[0] #列印第一個1
	print _list[-1] #列印最後一個元素 -2為倒數第二...
	_list.append(“新元素”) #新增到最後
	_list.insert(0,“插入到第一個”)
	_list.pop()#刪除最後一個 帶引數表示要刪除的索引
	_list[-1] = “新元素”

8.tuple 有序列表,元組,list不同的是 tuple一旦建立就不能修改了

	_tuple = (1,True,1.0,’tuple)
	_tuple = (1,) #單元素新增, 


9.If

具有相同縮排的程式碼被視為程式碼塊嚴格按照Python的習慣寫法:4個空格,不要使用Tab,更不要混合Tab和空格

	if elif elif # if else if

10.for

	L = [“name1”,’name2’]
	for name in L: #遍歷tuple類似

11.while 沒啥不同

	while true:#死迴圈

12.dict 類似於javamap

	d = {
	“dog”:0,
	“pig”:1,
	“me”,100
	}
	d[“pig”] #訪問1 存在返回 不存在報錯:KeyError
	d.get(“pig”) #訪問2 存在返回  不存在返回None
 
	if “pig” in d:
		print d[“pig”]


dict特點:

A.查詢速度快,無論元素多少,查詢速度一樣快

B.佔用記憶體大,浪費內容

C.dict按照key查詢,在一個dictkey不可以重複

D.Key-value序對是沒有順序的

13.Set

元素不能重複

	S = set([‘A’,2,”b”]) #建立方式是往()中傳入一個list,list的元素將作為set的元素訪問
	‘A’ in s # True
	‘C’ in s #false
	S.add(3)
	S.remove(‘A’)#加判斷 不然會報錯 KeyError


特點:

A.set的內部結構和dict類似,區別是沒value,因此判斷一個元素是否在set中的速度很快

B.Set儲存的元素是沒有順序的 和dict類似

 

14.函式

查詢預定義的函式文件連結:http://docs.python.org/2/library/functions.html#abs

也可以通過help(abs)檢視abs的資訊

 

在呼叫函式的時候如果傳入的引數數量不對,會報TypeError錯誤

如果傳入的引數型別不能被函式接受,也會報TypeError

 

編寫函式:

	def method_name(x):
	return 1


如果沒有return語句,函式執行完畢後會返回及結果,只是結果為None return None 等於 return

 

Python函式可以返回多值

	def demo():
	return 1,2
	x,y = demo() #但其實返回的是一個tuple 內部有加工處理


 

函式預設值Demo:

	def green(name='world'):
    	print 'hello',name
	green()
	green(u"姓名")

 

可變引數:

	def fn(*args):#args為tuple 可傳入0 1,n個引數
    	print args


 

15.list進行切片

list前幾個元素

兩種方法

A.

	r = []
	n = 3
	for i in range(n)
	R.append(l[i])

B.

	L[0:3]#從L集合中提取0到3的資料包0不含3 如果從0開始還可以省略0 L[:3]
	L[:]#從頭到尾 因此L[:]相當於複製了一份L
	L[0:4:2]#從0開始到4(不含4)每2個元素取第一個


 

16.迭代

有序集合:listtuplestrunicode

無序集合:set

無序集合並且具有 key-value 對:dict

 

索引迭代:需要在迭代的時候拿到有序集合的索引

 

	L = ['Adam', 'Lisa', 'Bart', 'Paul']
         for index, name in enumerate(L):#enumerate()將有序集合變成了類似
	#[(k1,v1),(k2,v2)]因此迭代的每一個其實是tuple
    	print index, '-', name
 
	for t in enumerate(L)
	print t[0],’-’,t[1]

 

 

迭代dictvalue

A.dictvalues()方法,dictvalue生成一個list

B.Dictitervalues()方法,效果一樣

區別:

A.values()方法實際上把一個dict轉換成了包含valuelist

B.Itervalues()方法不會轉換,它會在迭代過程中依次從dict中取出value,所以itervalues()方法比values()方法節省了生成list所需要的記憶體

C.dictk v一起迭代 通過dictitems()方法

	for key, value in d.items():
    		print key, ':', value


17.生成列表

A.range(1,100)#生成一個[1....100]list

B.[x * x for x range(1,11)] #[1,4,9,16....]寫列表生成式時,把要生成的元素 x * x 放到前面,後面跟 for 迴圈,就可以把list創建出來

18.複雜表示式

假設有如下的dict

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

完全可以通過一個複雜的列表生成式把它變成一個 HTML 表格:

	tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
	print '<table>'
	print '<tr><th>Name</th><th>Score</th><tr>'
	print '\n'.join(tds)
	print '</table>'

注:字串可以通過 % 進行格式化,用指定的引數替代 %s。字串的join()方法可以把一個 list 拼接成一個字串。

把打印出來的結果儲存為一個html檔案,就可以在瀏覽器中看到效果了:

<table border="1">

<tr><th>Name</th><th>Score</th><tr>

<tr><td>Lisa</td><td>85</td></tr>

<tr><td>Adam</td><td>95</td></tr>

<tr><td>Bart</td><td>59</td></tr>

</table>

 

EG1:

請編寫一個函式,它接受一個 list,然後把list中的所有字串變成大寫後返回,非字串元素將被忽略。

 

def toUppers(L):
    return [x.upper() for x in L if isinstance(x,str) ]
 
print toUppers(['Hello', 'world', 101])


 

EG2:

利用 3 for迴圈的列表生成式,找出對稱的 3 位數。例如,121 就是對稱數,因為從右到左倒過來還是 121

print [x*100 + y * 10 + z for x in range(1,10) for y in range(1,10) for z in range(1,10) if x == z ]