一 控制語句
1.1 條件語句(if)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#導(dǎo)入Python內(nèi)置模塊
import sys
#獲取本機(jī)當(dāng)前安裝的python版本
if sys.version_info.major<3:
print('Version 2.X')
elif sys.version_info.major>3:
print('Version Future')
else :
print('Version 3.x')
1.2 循環(huán)
(1)for和while循環(huán)
注意饱岸,與Java不同的是掺出,Python中的for不僅可以用于循環(huán)四種集合,還可以用于訪問字符串苫费。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#for循環(huán)訪問字符串語法
for x in "Hello":
print(x)
#while循環(huán)訪問語法
p=1
i=1
while i<10:
p=p*i
i+=1
print(p)
(2)break/continue語法
#break/continue語法
for x in range(1,10):
if x%2==0:
print('整除的數(shù)')
continue
if x>5:
print('大于5的數(shù)')
break
1.3 推導(dǎo)式(Comprehensions)
在Python中汤锨,代碼不是越多越好,而是越少越好百框。代碼不是越復(fù)雜越好泥畅,而是越簡單越好。1行代碼能實(shí)現(xiàn)的功能琅翻,決不寫5行代碼位仁。請(qǐng)始終牢記,代碼越少方椎,開發(fā)效率越高聂抢。
——廖雪峰Python教程
基于上面的思想,我們介紹Python比較強(qiáng)大的推導(dǎo)式(Comprehensions)棠众,這是一種將for循環(huán)琳疏、if表達(dá)式以及賦值語句放到單一語句中的一種方法有决。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#list 列表推導(dǎo)式
s=[2*x for x in range(10) if x*2>3]
print(s)
#打印結(jié)果[4, 6, 8, 10, 12, 14, 16, 18]
#用list列表推導(dǎo)式實(shí)現(xiàn)二維數(shù)組
pairs=[(x,y) for x in range(2) for y in range(2)]
print(pairs)
#打印結(jié)果[(0, 0), (0, 1), (1, 0), (1, 1)]
#set 推導(dǎo)式
s={2*x for x in range(10) if x*2>3}
print(s)
#打印結(jié)果[4, 6, 8, 10, 12, 14, 16, 18]
#用set推導(dǎo)式實(shí)現(xiàn)二維數(shù)組
pairs=set([(x,y) for x in range(2) for y in range(2)])
print(pairs)
#打印結(jié)果[(0, 0), (0, 1), (1, 0), (1, 1)]
#dict 推導(dǎo)式
di={s:len(s) for s in ["Python","Java","C#"]}
#{'Java': 4, 'Python': 6, 'C#': 2}
#dict 推導(dǎo)式
d={v:k for k,v in di.items()}
print(d)
#{2: 'C#', 4: 'Java', 6: 'Python'}
1.4 生成器和迭代器
(1)生成器
由于列表推導(dǎo)式,生成列表的元素個(gè)數(shù)不可控空盼,有時(shí)候浪費(fèi)存儲(chǔ)空間书幕,因此轰豆,為了解決浪費(fèi)存儲(chǔ)空間的問題瀑粥,生成器(generator)應(yīng)運(yùn)而生。
聲明generator稼钩,主要有兩種方法:第一種方法是把一個(gè)列表生成式的[]改成()篱瞎;第二種方法用包含yield關(guān)鍵字的函數(shù)生成一個(gè)generator苟呐。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#第一種方法聲明
g1=(x*x for x in range(3))
for x in g1:
print(x)
#打印輸出結(jié)果
#0
#1
#4
#第二種方法聲明,帶有yield的函數(shù),就是一個(gè)生成器
def reverse(data):
for x in range(len(data)-1,-1,-1):
yield data[x]
g2=reverse("Python")
#打印生成器
print(g2)
for i in g2:
print(i)
#打印輸出結(jié)果
#<generator object reverse at 0x0000000001060200>
#n
#o
#h
#t
#y
#P
(2)迭代器
Python中可以直接作用于for循環(huán)的數(shù)據(jù)類型有以下幾種:一類是集合數(shù)據(jù)類型俐筋,如>list牵素、tuple、dict澄者、set笆呆、str等;一類是generator粱挡,包括生成器和帶yield的generator >function腰奋。
這些可以直接作用于for循環(huán)的對(duì)象統(tǒng)稱為可迭代對(duì)象:Iterable。
凡是可作用于for循環(huán)的對(duì)象都是Iterable類型抱怔;
凡是可作用于next()函數(shù)的對(duì)象都是Iterator類型劣坊,它們表示一個(gè)惰性計(jì)算的序列;
集合數(shù)據(jù)類型如list屈留、tuple局冰、dict、str等是Iterable但不是Iterator灌危,不過可以通過iter()函數(shù)獲得一個(gè)Iterator對(duì)象康二。
——廖雪峰Python教程
用法如下:
#判斷是否是迭代器
from collections import Iterable
print(isinstance([], Iterable))
#打印結(jié)果True
#轉(zhuǎn)換可迭代對(duì)象為迭代器
p=iter("SZ")
print(p)
for x in p:
print(x)
#打印結(jié)果
#True
#<str_iterator object at 0x0000000000B2D1D0>
#S
#Z
待續(xù)
參考文章
1.Google Python風(fēng)格指南 http://zh-google-styleguide.readthedocs.org/en/latest/google-python-styleguide/contents/
2.Python官方教程 https://docs.python.org/3/tutorial/index.html