① 100行python代碼,輕松完成貪吃蛇小游戲
你是想讓我們向你提問題?你這個放錯地方了,應該發布到自己的博客或論壇上面才對
② 求簡潔優美的python代碼例子、片段、參考資料
樓主貼的那段代碼好像是我寫的那段吧,我來告訴你如何寫出來的吧
首先我不是高手,我也沒有人教,我的編程都是自學的,我只是一個業余愛好者.
寫出這樣的代碼很簡單,就是要多練,我只是把python的基本語法學會,然後就不停地練習,我沒有看過樓上的那些資料,我只是不停地碼代碼,或許有捷徑,但是我沒有發現.
我從07年開始寫python的腳本,我一開始的代碼風格也很差,特別是我先學c++,然後再轉python的,當寫的代碼越來越多,對python的了解就會加深,代碼風格也會自動改變的,不需要著急,其實這就是對一門語言的了解程度,你可以看看我回答的問題,我的回答就是我對python的理解,如果你能堅持下來,相信7年後你寫的代碼會比我寫得更好.
樓上的題目有點意思,我也寫一下,不知道對否
s='''
TheZenofPython,byTimPeters
Beautifulisbetterthanugly.
Explicitisbetterthanimplicit.
Simpleisbetterthancomplex.
.
Flatisbetterthannested.
Sparseisbetterthandense.
Readabilitycounts.
Specialcasesaren'tspecialenoughtobreaktherules.
.
Errorsshouldneverpasssilently.
Unlessexplicitlysilenced.
Inthefaceofambiguity,refusethetemptationtoguess.
Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.
'reDutch.
Nowisbetterthannever.
*right*now.
,it'sabadidea.
,itmaybeagoodidea.
--let'sdomoreofthose!
'''
importre,collections
tail_map={"'s":'is',"'re":'are',"n't":'not'}
data=collections.Counter(re.findall('w+',re.sub("('s|'re|n't)",lambdamatchobj:tail_map[matchobj.group()],s.lower())))
max_len=max(data.values())
print('Totalwordcount:%d',sum(data.values()))
forwordinsorted(data):
print('%*s=>%d'%(max_len,word,data[word]))
③ Python中的9個代碼小實例!
1、串聯比較
2、串聯函數調用
3、復制列表
4、字典獲取元素值
5、 按值排序字典
6、 For Else
7、列表轉換為逗號分隔的字元串
8、合並字典
9、尋找列表中最大和最小元素的索引
若有不明白的地方,請移步Python視頻教程繼續學習!!
④ Python 有哪些優雅的代碼實現
列表切割
list[start:end:step]
如果從列表開頭開始切割,那麼忽略 start 位的 0,例如list[:4]
如果一直切到列表尾部,則忽略 end 位的 0,例如list[3:]
切割列表時,即便 start 或者 end 索引跨界也不會有問題
列表切片不會改變原列表。索引都留空時,會生成一份原列表的拷貝
b= a[:]
assertb== aandbisnota# true
列表推導式
使用列表推導式來取代map和filter
a= [1,2,3,4,5,6,7,8,9,10]
# use map
squares= map(lambdax: x ** 2,a)
# use list comprehension
squares= [x ** 2forxina]
# 一個很大的好處是,列表推導式可以對值進行判斷,比如
squares= [x ** 2forxinaifx% 2== 0]
# 而如果這種情況要用 map 或者 filter 方法實現的話,則要多寫一些函數
不要使用含有兩個以上表達式的列表推導式
# 有一個嵌套的列表,現在要把它裡面的所有元素扁平化輸出
list= [[
[1,2,3],
[4,5,6]
]]
# 使用列表推導式
flat_list= [xforlist0 inlist forlist1 inlist0 forxinlist1]
# [1, 2, 3, 4, 5, 6]
# 可讀性太差,易出錯。這種時候更建議使用普通的循環
flat_list= []
forlist0 inlist:
forlist1 inlist0:
flat_list.extend(list1)
數據多時,列表推導式可能會消耗大量內存,此時建議使用生成器表達式
# 在列表推導式的推導過程中,對於輸入序列的每個值來說,都可能要創建僅含一項元素的全新列表。因此數據量大時很耗性能。
# 使用生成器表達式
list= (x ** 2forxinrange(0,1000000000))
# 生成器表達式返回的迭代器,只有在每次調用時才生成值,從而避免了內存佔用