pythonic

  1. 循環(huán)遍歷區(qū)間元素, xrange 返回的是生成器對(duì)象,生成器比列表更加節(jié)省內(nèi)存。
    xrange 是 python2 中的寫法,python3 只有 range 方法,特點(diǎn)和 xrange 是一樣的。
In [14]: for i in xrange(3):
   ....:     print i
   ....:
0
1
2
  1. enumerate 內(nèi)置函數(shù)使用
    對(duì)于一個(gè)可迭代的(iterable)/可遍歷的對(duì)象(如列表、字符串),enumerate將其組成一個(gè)索引序列,利用它可以同時(shí)獲得索引和值, 多用于在for循環(huán)中得到計(jì)數(shù), 也可以統(tǒng)計(jì)小文件的行號(hào)和對(duì)應(yīng)內(nèi)容。還可以接收第二個(gè)參數(shù),用于指定索引起始值。
In [16]: test = ['a', 'b', 'c']
In [20]: for index, item in enumerate(test):
   ....:     print index, item
   ....:
0 a
1 b
2 c
In [21]: for index, item in enumerate(test, 2):
   ....:     print index, item
   ....:
2 a
3 b
4 c
  1. 兩個(gè)變量交換, 不需要引入中間變量
In [2]: a = 1
In [3]: b = 2
In [4]: a, b = b, a
In [5]: a
Out[5]: 2
In [6]: b
Out[6]: 1
  1. join字符串連接, 將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個(gè)新的字符串, 用 join 方法整個(gè)過程只會(huì)產(chǎn)生一個(gè)字符串對(duì)象.
In [22]: test
Out[22]: ['a', 'b', 'c']
In [23]: result = ''.join(test)
In [24]: result
Out[24]: 'abc'
In [25]: result = '@'.join(test)
In [26]: result
Out[26]: 'a@b@c'
  1. list 應(yīng)用, 列表對(duì)象(list)是一個(gè)查詢效率高于更新操作的數(shù)據(jù)結(jié)構(gòu),比如刪除一個(gè)元素和插入一個(gè)元素時(shí)執(zhí)行效率就非常低,因?yàn)檫€要對(duì)剩下的元素進(jìn)行移動(dòng)。
In [27]: from collections import deque
In [28]: test
Out[28]: ['a', 'b', 'c']
In [29]: new_test = deque(test)
In [30]: new_test
Out[30]: deque(['a', 'b', 'c'])
In [31]: new_test.popleft()
Out[31]: 'a'
In [33]: new_test
Out[33]: deque(['b', 'c'])
In [35]: new_test.appendleft('d')
In [36]: new_test
Out[36]: deque(['d', 'b', 'c'])
  1. 遍歷字典, iteritems 返回迭代器對(duì)象,可節(jié)省更多的內(nèi)存,不過在 python3 中沒有該方法了,只有 items 方法,等值于 iteritems
In [41]: test = {'a': 1, 'b': 2}
In [42]: for k, v in test.iteritems():
   ....:     print k, v
   ....:
a 1
b 2
  1. if/else 三目運(yùn)算
In [3]: age = 20
In [5]: you='old' if age > 18 else 'young'
In [6]: you
Out[6]: 'old'
  1. for/else 語句
    即在for 循環(huán)中,如果沒有從任何一個(gè)break中退出,則會(huì)執(zhí)行和for對(duì)應(yīng)的else
    只要從break中退出了,則else部分不執(zhí)行
        for i in xrange(5):
   ...:     if i == 5:
   ...:         break
   ...: else:
   ...:     raise ValueError('Not found 5')
ValueError: Not found 5
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容