python列表解析不寫for迴圈do something

來源:互聯網
上載者:User

不用for迴圈,迴圈五次,取個隨機值

result = [random.randint(1,100) for x in range(5)]

result = [[random.randint(1,100) for x in range(5)] for y in range(5)]

 

參考:

Python 的列表解析(list comprehension)和產生器運算式(generator expression)

列表解析:
文法:[expr for iter_var in iterable] 或 [expr for iter_var in iterable if cond_expr]

說明:
第一種文法:首先迭代iterable裡所有內容,每一次迭代,都把iterable裡相應內容放到iter_var中,再在運算式中應用該iter_var的內容,最後用運算式的計算值產生一個列表。
第二種文法:加入了判斷語句,只有滿足條件的內容才把iterable裡相應內容放到iter_var中,再在運算式中應用該iter_var的內容,最後用運算式的計算值產生一個列表。

舉例:
>>> [i + 1 for i in range(10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> [i + 1 for i in range(10) if i % 2]
[2, 4, 6, 8, 10]

產生器運算式:
文法:(expr for iter_var in iterable) 或 (expr for iter_var in iterable if cond_expr)

說 明:列表解析是比較早的Python版本裡就引進的(好像是2.0版本),而產生器運算式則是在2.4中引入的新內容,它和列表解析的文法很像,但是在大資料量處理時,產生器運算式的優勢就體現出來了,因為它的記憶體使用量方式更好,效率更高,它並不建立一個列表,只是返回一個產生器。當然,列表解析並不會被 遺棄。

舉例:
>>> (i + 1 for i in range(10) if i % 2)
<generator object <genexpr> at 0x011DC5D0>

>>> g = (i + 1 for i in range(10) if i % 2)
>>> l = []
>>> for j in g:
l.append(j)
>>> l
[2, 4, 6, 8, 10]
從上面可看出,列表解析和產生器運算式文法雖然很像,但實質上還是有很大不同的。
Python可是很強大很優美很高效很簡潔很有趣的,希望更多的人來認識它。

Some simple generators can be coded succinctly as expressions using a syntax similar to list comprehensions but with parentheses instead of brackets.

These expressions are designed for situations where the generator is used right away by an enclosing function.

Generator expressions are more compact but less versatile than full generator definitions and tend to be more memory friendly than equivalent list comprehensions.

參考:
Python Tutorial
http://home.ixpub.net/space.php?uid=16111523&do=blog&id=404460

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.