Python小窺 - 寫給Python的入門者

標簽(空格分隔): Python 翻譯


來自 http://maxburstein.com/blog/python-shortcuts-for-the-python-beginner/

第一次試著翻譯二驰,不足之處,還請見量秉沼!

下面是我這些年在使用Python的過程中桶雀,收集的一些方法和工具,希望能幫助到讀者

交換變量

x = 6
y = 5
 
x, y = y, x
 
print x
>>> 5
print y
>>> 6

單行表達式

print "Hello" if True else "World"
>>> Hello

聯(lián)結(jié)

最后一種方式唬复,是聯(lián)結(jié)兩個不同類型對象的很好的方法

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
print nfc + afc
>>> ['Packers', '49ers', 'Ravens', 'Patriots']
 
print str(1) + " world"
>>> 1 world
 
print `1` + " world"
>>> 1 world
 
print 1, "world"
>>> 1 world
print nfc, 1
>>> ['Packers', '49ers'] 1

數(shù)字技巧

#Floor Division (rounds down)
print 5.0//2
>>> 2
 
#2 raised to the 5th power
print 2**5
>> 32

注意除法和浮點數(shù)

print .3/.1
>>> 2.9999999999999996
 
print .3//.1
>>> 2.0

數(shù)值比較

這種很有意思的比較方法矗积,在其他的編程語言中,我還沒有見到敞咧,

x = 2
 
if 3 > x > 1:
    print x
>>> 2
 
if 1 < x > 0:
    print x
>>> 2

多列表同時循環(huán)

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
 
for teama, teamb in zip(nfc, afc):
    print teama + " vs. " + teamb
 
>>> Packers vs. Ravens
>>> 49ers vs. Patriots

加索引循環(huán)列表

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
    print index, team
 
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots

列表解析

第一種:

numbers = [1,2,3,4,5,6]
even = []
for number in numbers:
    if number%2 == 0:
        even.append(number)

或者

numbers = [1,2,3,4,5,6]
even = [number for number in numbers if number%2 == 0]

是不是很棒棘捣?

字典解析

模仿列表解析,對字典進行處理

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print {key: value for value, key in enumerate(teams)}
>>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}

初始化列表

items = [0]*3
print items
>>> [0,0,0]

把列表轉(zhuǎn)化為字符串

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print ", ".join(teams)
>>> 'Packers, 49ers, Ravens, Patriots'

從字典獲取項

我覺得try/except語句太難看了休建,在字典對象中可以用一個小技巧乍恐,在字典取值時,如果沒有相應的項测砂,剛使用其他項來代替

一般寫法

data = {'user': 1, 'name': 'Max', 'three': 4}
try:
    is_admin = data['admin']
except KeyError:
    is_admin = False

我的寫法

data = {'user': 1, 'name': 'Max', 'three': 4}
is_admin = data.get('admin', False)

列表取值

有時候列表中的一部分才是我們需要的茵烈,下面是取部分列表值的一些方法

x = [1,2,3,4,5,6]
 
#First 3 
print x[:3]
>>> [1,2,3]
 
#Middle 4
print x[1:5]
>>> [2,3,4,5]
 
#Last 3
print x[-3:]
>>> [4,5,6]
 
#Odd numbers
print x[::2]
>>> [1,3,5]
 
#Even numbers
print x[1::2]
>>> [2,4,6]

FizzBuzz in 60 Characters

以前,Jeff Atwood這個小伙砌些,提出了一個稱為“FizzBuzz”r 簡單程序練習呜投,這是它的解釋

Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".  

要求:打印1到100,遇到3的倍數(shù)存璃,只打印“Fizz”,遇到5的倍數(shù)仑荐,打印“Buzz”,同時遇到3,5的倍數(shù)纵东,打印“FizzBuzz”

很簡單的解決辦法

for x in range(1,101):print"Fizz"[x%3*4:]+"Buzz"[x%5*4:]or x

集合

除了python的內(nèi)置數(shù)據(jù)類型粘招,在collections模塊中也有一些其他的特殊用法,我發(fā)現(xiàn)Counter很有用篮迎,

from collections import Counter
 
print Counter("hello")
>>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})

迭代工具 Itertools

除了上面說的collections男图,python還有一個itertools的庫示姿,可以有效的解決一些問題甜橱,其中之一是組合問題逊笆,把一個組中可能的組合方式都找出來

from itertools import combinations
 
teams = ["Packers", "49ers", "Ravens", "Patriots"]
for game in combinations(teams, 2):
    print game
 
>>> ('Packers', '49ers')
>>> ('Packers', 'Ravens')
>>> ('Packers', 'Patriots')
>>> ('49ers', 'Ravens')
>>> ('49ers', 'Patriots')
>>> ('Ravens', 'Patriots')

False == True

這更多應該算是一個有意思的地方,而不是一個技巧岂傲,在python中True和False都是基本的公用變量难裆,因此:

False = True
if False:
    print "Hello"
else:
    print "World"
 
>>> Hello

謝謝閱讀。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镊掖,一起剝皮案震驚了整個濱河市乃戈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亩进,老刑警劉巖症虑,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異归薛,居然都是意外死亡谍憔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門主籍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來习贫,“玉大人,你說我怎么就攤上這事千元∩徊” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵幸海,是天一觀的道長祟身。 經(jīng)常有香客問我,道長物独,這世上最難降的妖魔是什么袜硫? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮议纯,結(jié)果婚禮上父款,老公的妹妹穿的比我還像新娘。我一直安慰自己瞻凤,他們只是感情好憨攒,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阀参,像睡著了一般肝集。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛛壳,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天杏瞻,我揣著相機與錄音所刀,去河邊找鬼。 笑死捞挥,一個胖子當著我的面吹牛浮创,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砌函,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斩披,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了讹俊?” 一聲冷哼從身側(cè)響起垦沉,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仍劈,沒想到半個月后厕倍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡贩疙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年讹弯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屋群。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡闸婴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芍躏,到底是詐尸還是另有隱情邪乍,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布对竣,位于F島的核電站庇楞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏否纬。R本人自食惡果不足惜吕晌,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望临燃。 院中可真熱鬧睛驳,春花似錦、人聲如沸膜廊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爪瓜。三九已至蹬跃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铆铆,已是汗流浹背蝶缀。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工丹喻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翁都。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓碍论,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荐吵。 傳聞我的和親對象是個殘疾皇子骑冗,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容