Monday, 20 October 2014

[Python] đếm trong list

Tuy code Python đã lâu, nhưng giờ mình mới để ý list chỉ có 9 public method, một con số không phải là lớn, và nếu bạn không nhớ hết, đôi khi bạn sẽ thấy bất ngờ.

Đề bài: đếm số phần tử True trong list bools dưới đây:
In [2]: import random

In [13]: nums = [random.randint(0,10) for i in range(10)]

In [15]: bools = [True if i % 2 == 0 else False for i in nums]

Sau khi nghĩ xong cách bạn sẽ làm, hãy bấm để xem tiếp

 Cách 1:
In [18]: len([e for e in bools if e is True])
Out[18]: 5
Cách 2:
In [24]: len(filter(lambda x: x is True, bools))
Out[24]: 5
Cách 3:
In [26]: bools.count(True)
Out[26]: 5
Cách 3 đơn giản, và pythonic nhất.
Chú ý: kết quả trên máy bạn có thể khác, bởi hàm randint sẽ sinh ra một số bất kỳ trong khoảng từ 0 đến 10.

list chỉ có 9 method, hãy nhớ tất cả:
In [27]: list.
list.append   list.extend   list.insert   list.pop      list.reverse
list.count    list.index    list.mro      list.remove   list.sort