——python的設計哲學是“優雅”、“明确”、“簡單”
推薦的ide:pycharm python版本2.7
(1)整數、浮點數與c++一樣,其運算也是一樣。
(2)字元串:“”或’’括起來的文本,對特殊字元,可以用 \ 進行轉義。可以用 r'...' 和r'''...'''轉義多個特殊字元,後者對段落有效。以unicode表示的字元串用 u'...' 表示,不加u中文不能正常顯示。同樣有u'''...''',甚至組合為ur'''...'''。
可以在第一行添加注釋
# -*- coding: utf-8 -*-
目的是告訴python解釋器,用utf-8編碼讀取源代碼。
(3)布爾值:用true和false表示(注意大小寫),可以用and、or和not運算。
python把0、空字元串''和none看成 false,其他數值和非空字元串都看成 true。
(4)空值:none
(5)list:一種有序的集合,可以随時添加和删除其中的元素。構造很簡單,直接用 [ ] 就可以了,裡面的元素也不要求類型相同,超級自由的,像這樣:
my_list = ['you', true, 233]
或是這樣
empty_list = []
我們可以直接用print就把整個list列印出來,超級友善!
而且還可以用下标通路,跟數組一樣:l[1],倒序通路也可以!!!l[-1]我的天呐!
插入:有兩種方法:l.append(元素)追加元素到末尾,l.insert(0,元素)插入元素到0位置,其他元素順勢往後移。
删除:l.pop(),删掉最後一個,l.pop(2)删掉位置2的元素。
替換:l[0]=元素,直接替換0位置的元素。
(6)tuple(元組):一旦建立就不能修改。建立方式是這樣的:
t = ('元素1', '元素2', '元素3') 或是 t=(元素,)——單元素tuple需要避免歧義。
tuple裡面嵌套list也是可以的:
t = ('a', 'b', ['a', 'b'])
(7)dict:表示映射關系的字典,用 {} 表示,花括号裡是key:value這樣的對應關系。
len(d)可以用來求字典的大小。要注意key是不可變得類型,如字元串、整數、浮點數。
通路dict裡面的元素:d[key],但要知道這個key值是否存在,避免發生錯誤。判斷方法如下:
1. if ‘key’ in d:
2. d.get(‘key’),存在傳回value,不存在傳回none
d[key]=value語句可以用于添加新的映射,也可以用于修改原來的映射。
(8)set:set裡面的元素不會有重複,而且是無序的。建立 set 的方式是調用 set() 并傳入一個 list,list的元素将作為set的元素。
s = set(['元素1', '元素2', '元素3'])
用in操作符判斷一個元素是否在set中。
s.add(元素)和s.remove(元素)可以用于在set中添加和删除元素。删除時需注意判斷元素是否在set中,否則會報錯。
變量的命名規則:大小寫英文、數字和下劃線(_)的組合,且不能用數字開頭。
python是動态語言,變量本身的類型是不固定的!
print語句,可以連多個字元串,用“,”隔開,在輸出中會顯示為空格。
以 # 開頭,至行尾都是注釋
python代碼的縮進規則:具有相同縮進的代碼被視為代碼塊。縮進據說用4個空格比較好。
(1)if語句:
if+表達式+:
(2)if-else語句:
else:
(3)if-elif-else語句:
elif+表達式+:
(4)for循環:
可以用來周遊list、tuple、dict和set裡的元素:
l = ['adam', 'lisa', 'bart']
for name in l:
print name
(5)while循環:
while+表達式+:
(6)break跳出循環:
再循環中可以使用break跳出循環。
(7)continue跳出本次循環,繼續以後的循環:
調用:方法和c++一樣,像:abs(-1)、cmp(x,y)、int(‘123’)、str(123)。(後兩個為類型轉換),zip()函數可以把兩個list變成一個list:
>>> zip([10, 20, 30], ['a', 'b', 'c'])
[(10, 'a'), (20, 'b'), (30, 'c')]
編寫:用def語句,後接函數名、括号、參數和冒号,再編寫函數體,裡面可以包含return語句,當然也可以沒有,這時會傳回none。
注意python的函數是可以傳回多個值的,實際上這裡傳回的是一個tuple。像下面這段代碼:
import math
def move(x, y, step, angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
遞歸函數、預設參數和c++的差不多。
可變參數:參數名前面加一個*,就可以傳入0個、1個或多個參數。其實這裡也是一個tuple。看下面求平均值的一段代碼:
def average(*args):
ave=0.0
ji=0.0
for i in args:
ji=ji+1
ave+=i
if ji!=0:
ave=ave/ji
return ave
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)
關鍵字參數:允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數内部自動組裝為一個dict。
def person(name, age, **kw):
print 'name:', name, 'age:', age, 'other:', kw
>>> person(mike, 20)
name: mike age: 20 other: {}
>>> person('sam', 15, city=’guangdong’)
name: sam age: 15 other: {'city': ’guangdong’}
>>> person(‘allen’, 45, gender='m', job='player')
name: allen age: 45 other: {'gender': 'm', 'job': ‘player’}
,可以對list和tuple甚至字元串進行切片,看下面幾個例子就明白了:
l[0:3]:表示從0開始的3個元素
l[:3]:表示從0開始的3個元素
l[:]:表示從頭到尾
l[::2]:第三個參數表示每兩個元素取一個
倒序也是可以的!l[-2:]:表示從倒數第二個到末尾的元素
(1)enumerate() 函數,可以在循環中同時綁定元素下标和元素,實際上是把元素下标和元素組成tuple中的映射。
看下面代碼:
>>> l = ['a', 'b', 'c', 'd']
>>> for index, name in enumerate(l):
... print index, '-', name
...
0 - a
1 - b
2 - c
3 - d
(2)dict的周遊:
1.直接周遊時周遊的是dict的key,像下面的代碼:
for key in d:
print key+':',d[key]
2.若想要周遊value,方法有兩種:
一種是用values()方法:
for v in d.values():
print v
另一種是用 itervalues() 方法(更省記憶體):
for v in d.itervalues():
3.同時周遊,我們有時需要同時周遊dict的key和value,我們有items()方法和iteritems()方法,後者不占用額外的記憶體。看下面的代碼:
>>> for key, value in d.items():
print key, ':', value
清單生成式可以用簡潔的代碼生成list。代碼例子像下面這樣:
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
當然多層嵌套也是可以的:
>>> [m + n for m in 'abc' for n in '123']
['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
當然有些時候我們隻需要按一定規則生成的元素,而不需要把所有元素列出一個list。這個時候我們就可以用生成器(generator)。
我們用 () 建立,像這樣: g = (x * x for x in range(10)),我們可以一直用next()方法調用生成的元素,當然用一個for循環會顯得理智得多。
當函數傳回結果用yield語句時,它其實也是一個生成器。
寫文章的時候剛剛接到消息,小李子拿奧斯卡了,嗷嗷~,小李子你不是一個人在拿獎