Trong bài này bạn sẽ được học cách sử dụng hàm set add() trong Python, hàm này có công dụng thêm một phần tử vào Set, nếu phần tử này đã tồn tại trong Set thì nó sẽ không làm gì cả. Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Hàm set add() trong PythonDưới đây là cú pháp của hàm set add. Trong đó:
Vì hàm này không trả về một giá trị nào cả nên nếu bạn sử dụng lệnh sau thì sẽ không nhận được một tập hợp Set. Bài viết này được đăng tại [free tuts .net] noneValue = set().add(elem) Để ý kĩ thì bạn sẽ thấy lớp noneValue = set() noneValue.add(elem) 2. Ví dụ hàm set add trong PythonSau đây là vài ví dụ cách sử dụng hàm này. Ví dụ 1: Thêm một phần tử đơn giản vào Set # set of vowels vowels = {'a', 'e', 'i', 'u'} # adding 'o' vowels.add('o') print('Vowels are:', vowels) # adding 'a' again vowels.add('a') print('Vowels are:', vowels) Khi bạn chạy chương trình này thì kết quả sẽ như sau: Vowels are: {'a', 'i', 'o', 'u', 'e'} Vowels are: {'a', 'i', 'o', 'u', 'e'} Lưu ý: Vì Set không có chỉ mục nên thứ tự giữa các phần tử có thể sẽ khác nhau. Ví dụ 2: Thêm một Tuple vào Set # set of vowels vowels = {'a', 'e', 'u'} # a tuple ('i', 'o') tup = ('i', 'o') # adding tuple vowels.add(tup) print('Vowels are:', vowels) # adding same tuple again vowels.add(tup) print('Vowels are:', vowels) Kết quả sẽ như sau: Vowels are: {('i', 'o'), 'e', 'u', 'a'} Vowels are: {('i', 'o'), 'e', 'u', 'a'} Lời kết: Như vậy là mình đã hướng dẫn xong cách sử dụng hàm set add() trong Python, chúc bạn học tốt và nắm bắt được ngôn ngữ này. Vài ghi chép vụn vặt... Bài viết dùng python 2.7.5. 1. zip cái tên hàm rất rất rất dễ hiểu nếu bạn biết zip là gì: nó là cái khoá kéo (phéc măng tuya ???). Có 2 dải, và nó sẽ ghép chúng thành từng cặp (tuple). Với function zip, nó có thể zip nhiều list với nhau (2 trở lên, và sẽ cắt ở độ dài của list ngắn nhất - nếu kéo khoá mà 1 bên hết thì phải dừng lại thôi :D) Code (viết trên ipython): In [8]: numbs = range(1,10) In [11]: adjs = ['perfect', 'awesome', 'bloated'] Chú ý: ở dòng [9], tên biến nên đặt là ``names`` thay vì ``name``, tác giả quá lười nên không đổi lại nên đành để vậy. 2. __new__ và __init__ 2.1 Method __init__ Code ví dụ (được viết trên ipython): In [13]: class FAMILUG(object): Giải thích: FAMILUG(): gọi class object FAMILUG, tạo ra một class instance mới của class FAMILUG. Class instance này được gán cho variable fml, hiển nhiên nó cũng là một object (nhắc lại: everything in Python is object) nhưng chỉ gọi là class instance cho ngắn và phân biệt với class object. Do method __init__ tự được gọi nên quá trình tạo class instance này đã in ra chữ ``THON``. Ở đây không giải thíchchi tiết về cách viết method __init__ hay cú pháp của class. Xem thêm ở https://docs.python.org/2/tutorial/classes.html#a-first-look-at-classes NOTICE: phần sau chỉ nên đọc nếu bạn nắm được các khái niệm về OOP trong python. 2.2 Method __new__ Vậy method __new__ là gì? Method __new__ được gọi để tạo ra một instance mới của class đó. Vậy toàn bộ dòng code ``FAMILUG()`` có thực hiện ít
nhất 2 việc sau: Bình thường programmer không cần viết __new__ mà sẽ tự dụng __new__ của class mà nó kế thừa. class Runtime(object): Trong method __new__ trên thực hiện kiểm tra xem class attribute ``instance`` đã được gán giá trị nào chưa, nếu chưa thì tạo một class instance mới, nếu rồi thì trả về class instance đã tồn tại. Do class object Runtime là duy nhất, nên attribute ``instance`` cũng là duy nhất, nó khác với data attribute của class instance (thường được gán self.xyz = blah ở __init__, mỗi class instance đều có thể có giá trị riêng). Chú ý __new__ là static method (giống function bình thường (function viết ở module level) nhưng đặt trong một class - chủ yếu để tổ chức code cho hợp lý), nó không được nhận bất kỳ implicit argument nào (self hay cls). Tham khảo: class method vs static method http://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python |