Hướng dẫn dùng collect meaning python - sử dụng python thu thập ý nghĩa
Module collection trong Python được định nghĩa là một bộ chứa được sử dụng để lưu trữ các bộ sưu tập dữ liệu, ví dụ: list, dict, set và tuple,... Nó được giới thiệu để cải thiện các chức năng của bộ chứa bộ sưu tập tích hợp. được định nghĩa là một bộ chứa được sử dụng để lưu trữ các bộ sưu tập dữ liệu, ví dụ: list, dict, set và tuple,... Nó được giới thiệu để cải thiện các chức năng của bộ chứa bộ sưu tập tích hợp. Show
Nội dung chính ShowShow
Nội dung chính
Nội dung chính
Nội dung chính Module collection trong Python được giới thiệu lần đầu tiên trong phiên bản 2.4. Hàm namedtuple()Có nhiều loại Module collection khác nhau như sau: test = ('Hello', 24, 'M') print(test) Hàm python namedtuple() trả về một đối tượng giống như tuple với tên cho từng vị trí trong bộ dữ liệu. Nó được sử dụng để loại bỏ vấn đề ghi nhớ chỉ số của từng trường của một đối tượng bộ dữ liệu trong các bộ dữ liệu thông thường. Hàm OrderedDict()Kết quả: import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v) Hàm python namedtuple() trả về một đối tượng giống như tuple với tên cho từng vị trí trong bộ dữ liệu. Nó được sử dụng để loại bỏ vấn đề ghi nhớ chỉ số của từng trường của một đối tượng bộ dữ liệu trong các bộ dữ liệu thông thường. Hàm defaultdict()Kết quả: from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three']) Hàm python namedtuple() trả về một đối tượng giống như tuple với tên cho từng vị trí trong bộ dữ liệu. Nó được sử dụng để loại bỏ vấn đề ghi nhớ chỉ số của từng trường của một đối tượng bộ dữ liệu trong các bộ dữ liệu thông thường. Hàm Counter()Hàm deque() from collections import Counter c = Counter() list = [1, 2, 3, 4, 5, 7, 8, 5, 9, 6, 10] Counter(list) Counter({1:5, 2:4}) list = [1, 2, 4, 7, 5, 1, 6, 7, 6, 9, 1] c = Counter(list) print(c[1]) Hàm python namedtuple() trả về một đối tượng giống như tuple với tên cho từng vị trí trong bộ dữ liệu. Nó được sử dụng để loại bỏ vấn đề ghi nhớ chỉ số của từng trường của một đối tượng bộ dữ liệu trong các bộ dữ liệu thông thường. Hàm deque()Yêu cầu from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq) Hàm python namedtuple() trả về một đối tượng giống như tuple với tên cho từng vị trí trong bộ dữ liệu. Nó được sử dụng để loại bỏ vấn đề ghi nhớ chỉ số của từng trường của một đối tượng bộ dữ liệu trong các bộ dữ liệu thông thường. Kết quả: Python OrderedDict() tương tự như một đối tượng Dictionary trong đó các khóa duy trì thứ tự chèn. Nếu chúng ta cố gắng chèn khóa một lần nữa, giá trị trước đó sẽ bị ghi đè cho khóa đó. Python defaultdict() được định nghĩa là một đối tượng giống như dictionary. Nó là một lớp con của lớp dict. Nó cung cấp tất cả các phương thức được cung cấp bởi dictionary nhưng lấy đối số đầu tiên làm kiểu dữ liệu mặc định. Python Count() là một lớp con của đối tượng từ điển giúp đếm các đối tượng hashtable. Yêu cầuThêm các trường được đặt tên vào Tuples
Thêm các trường được đặt tên vào TuplesThu thập dữ liệu trong từ điển Sử dụng deque để thêm hiệu quả các phần tử vào mỗi bên của bộ sưu tập
Kết luận Nội dung chính Module collection trong Python được giới thiệu lần đầu tiên trong phiên bản 2.4.
Python deque() là hàng đợi hai đầu cho phép chúng ta thêm và xóa các phần tử ở cả hai đầu. Thứ tư, 19/08/2020 | 00:00 GMT+7 Python 3 có một số cấu trúc dữ liệu được tích hợp sẵn, bao gồm bộ dữ liệu, từ điển và danh sách. Cấu trúc dữ liệu cung cấp cho ta cách tổ chức và lưu trữ dữ liệu. Mô-đun from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])5 giúp ta điền và thao tác cấu trúc dữ liệu một cách hiệu quả.
Trong hướng dẫn này, ta sẽ đi qua ba lớp trong mô-đun from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])5 để giúp bạn làm việc với bộ dữ liệu, từ điển và danh sách. Ta sẽ sử dụng from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])7 để tạo ra bộ dữ liệu với các lĩnh vực được đặt tên, from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 đến thông tin group chính xác trong từ điển, và from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])9 để thêm hiệu quả các yếu tố để hai bên của một danh sách giống như đối tượng. Ta có thể sử dụng lớp from collections import Counter c = Counter() list = [1, 2, 3, 4, 5, 7, 8, 5, 9, 6, 10] Counter(list) Counter({1:5, 2:4}) list = [1, 2, 4, 7, 5, 1, 6, 7, 6, 9, 1] c = Counter(list) print(c[1])9 để đại diện cho bộ cá từ trước đó:
Nếu ta chạy mã này, ta sẽ thấy kết quả sau:
from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)4 được khởi tạo bằng cách sử dụng lớp from collections import Counter c = Counter() list = [1, 2, 3, 4, 5, 7, 8, 5, 9, 6, 10] Counter(list) Counter({1:5, 2:4}) list = [1, 2, 4, 7, 5, 1, 6, 7, 6, 9, 1] c = Counter(list) print(c[1])9 . from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)4 là một bộ ba với ba nguyên tố được đặt tên rõ ràng.
from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)4 có thể được truy cập bằng tên của chúng hoặc bằng index tuple truyền thống:
Nếu ta chạy hai from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)8 , ta sẽ thấy kết quả sau: import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)0 Truy cập from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)9 trả về giá trị giống như truy cập phần tử thứ hai của from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)4 bằng cách sử dụng 1 .Sử dụng from collections import Counter c = Counter() list = [1, 2, 3, 4, 5, 7, 8, 5, 9, 6, 10] Counter(list) Counter({1:5, 2:4}) list = [1, 2, 4, 7, 5, 1, 6, 7, 6, 9, 1] c = Counter(list) print(c[1])3 từ module from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])5 làm cho chương trình của bạn dễ đọc hơn trong khi vẫn duy trì các thuộc tính quan trọng của một bộ tuple (chúng không thể thay đổi và có thứ tự). Ngoài ra, from collections import Counter c = Counter() list = [1, 2, 3, 4, 5, 7, 8, 5, 9, 6, 10] Counter(list) Counter({1:5, 2:4}) list = [1, 2, 4, 7, 5, 1, 6, 7, 6, 9, 1] c = Counter(list) print(c[1])3 nhà máy được đặt tên là bổ sung một số phương thức bổ sung cho các version của from collections import Counter c = Counter() list = [1, 2, 3, 4, 5, 7, 8, 5, 9, 6, 10] Counter(list) Counter({1:5, 2:4}) list = [1, 2, 4, 7, 5, 1, 6, 7, 6, 9, 1] c = Counter(list) print(c[1])9 . Sử dụng 6 để chuyển đổi một version thành từ điển:import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)1 Nếu ta chạy from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)8 , bạn sẽ thấy kết quả như sau: import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)2 Gọi 8 trên from collections import deque list = ["x", "y", "z"] deq = deque(list) print(deq)4 trả về một từ điển ánh xạ từng tên trường trong số ba tên trường với các giá trị tương ứng của chúng. Các version Python cũ hơn 3.8 có thể xuất dòng này hơi khác một chút. Ví dụ: bạn có thể xem một 0 thay vì từ điển đơn giản được hiển thị ở đây. Lưu ý: Trong Python, các phương thức có dấu gạch dưới ở đầu thường được coi là "riêng tư". Phương pháp bổ sung được cung cấp bởi Thu thập dữ liệu trong từ điểnViệc thu thập dữ liệu trong từ điển Python thường rất hữu ích. from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 từ module from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])5 có thể giúp ta thu thập thông tin trong từ điển một cách nhanh chóng và ngắn gọn.
from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 không bao giờ làm tăng 8 . Nếu một quan trọng là không có mặt, from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 chỉ chèn và trả về một giá trị giữ chỗ thay vì: import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)3 Nếu ta chạy mã này, ta sẽ thấy kết quả như sau: import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)4 from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 chèn và trả về giá trị giữ chỗ thay vì ném 8 . Trong trường hợp này, ta đã chỉ định giá trị trình giữ chỗ dưới dạng danh sách.Ngược lại, các từ điển thông thường sẽ tạo ra 8 khi thiếu các khóa:import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)5 Nếu ta chạy mã này, ta sẽ thấy kết quả như sau: import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)6 from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 chèn và trả về giá trị giữ chỗ thay vì ném 8 . Trong trường hợp này, ta đã chỉ định giá trị trình giữ chỗ dưới dạng danh sách.Ngược lại, các từ điển thông thường sẽ tạo ra 8 khi thiếu các khóa:Từ điển thông thường 3 gây ra 8 khi ta cố gắng truy cập vào một khóa không có.import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)7
from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 hoạt động khác với một từ điển thông thường. Thay vì tăng 8 trên một khóa bị thiếu, from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 gọi giá trị giữ chỗ không có đối số để tạo một đối tượng mới. Trong trường hợp này, 8 để tạo một danh sách trống.Tiếp tục với ví dụ về bể cá giả tưởng của ta , giả sử ta có một danh sách các bộ cá đại diện cho hàng tồn kho của bể cá: Ba con cá tồn tại trong bể - tên, loài và bể chứa của chúng được ghi chú trong ba bộ này. import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)8 Mục tiêu của ta là sắp xếp hàng tồn kho của ta theo bể — ta muốn biết danh sách cá có trong mỗi bể. Nói cách khác, ta muốn có một từ điển ánh xạ 9 thành 0 và 1 thành 2 .import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)9 Ta có thể sử dụng from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 để group cá theo bể: Chạy mã này, ta sẽ thấy kết quả sau: 4 được khai báo là một from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 rằng giá trị mặc định để chèn 8 thay vì ném một 8 . Vì điều này đảm bảo mọi khóa trong 4 sẽ trỏ đến một 9 , ta có thể tự do gọi 0 để thêm tên vào danh sách của mỗi bể.
from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 giúp bạn ở đây vì nó làm giảm nguy cơ xảy ra các 2 không mong muốn. Giảm các 2 không mong muốn nghĩa là chương trình của bạn có thể được viết rõ ràng hơn và ít dòng hơn. Cụ thể hơn, thành ngữ from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 cho phép bạn tránh tạo danh sách trống cho mọi bể theo cách thủ công. from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])0 Nếu không có from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 thì 6 cơ thể loop có thể trông như thế này: Thêm ví dụ chi tiết mà không có phán đoán mặc định Sử dụng chỉ một từ điển thông thường (thay vì một from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three']) 8 ) nghĩa là print(sammy.species) print(sammy[1]) 6 thân vòng lặp luôn luôn phải kiểm tra sự tồn tại của cho print(sammy.species) print(sammy[1]) 9 trong OutputFish(name='Sammy', species='shark', tank='tank-a') 4 . Chỉ sau khi ta xác minh print(sammy.species) print(sammy[1]) 9 đã có trong OutputFish(name='Sammy', species='shark', tank='tank-a') 4 hoặc vừa được khởi tạo bằng import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v) 03 , ta mới có thể thêm tên cá vào.
from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 có thể giúp cắt giảm mã soạn sẵn khi điền từ điển vì nó không bao giờ gây ra 8 .Theo ký hiệu Big O , việc thêm vào một danh sách là một phép toán import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)06 thời gian không đổi. Ngược lại, việc chèn vào đầu danh sách sẽ chậm hơn với hiệu suất import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)07 . Lưu ý: Các kỹ sư phần mềm thường đo lường hiệu suất của các thủ tục bằng cách sử dụng ký hiệu “Big O”. Khi kích thước của một đầu vào không ảnh hưởng đến thời gian thực hiện một thủ tục, nó được cho là chạy trong thời gian không đổi hoặc Đôi khi, kích thước của đầu vào ảnh hưởng trực tiếp đến lượng thời gian cần để chạy một thủ tục. Ví dụ: việc chèn vào đầu danh sách Python chạy càng chậm khi càng có nhiều phần tử trong danh sách. Ký hiệu Big O sử dụng chữ cái Nói chung, thủ tục Ta có thể chèn vào đầu danh sách Python: from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])1 Nếu ta chạy như sau, ta sẽ thấy kết quả như sau: from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])2 Phương thức import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)14 trong danh sách cho phép ta chèn import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)15 vào đầu import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)16 . Tuy nhiên, đáng chú ý, việc chèn vào đầu danh sách có hiệu suất import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)07 . Khi độ dài của import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)16 càng tăng, thời gian để chèn một con cá vào đầu danh sách sẽ tăng theo tỷ lệ thuận và ngày càng lâu hơn.
from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])9 (phát âm là “boong”) từ module from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])5 là một đối tượng giống như danh sách cho phép ta chèn các mục vào đầu hoặc cuối của một chuỗi với hiệu suất thời gian không đổi ( import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)06 ). Chèn một mục vào đầu from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])9 : from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])3 Chạy mã này, ta sẽ thấy kết quả sau: from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])4 Ta có thể khởi tạo from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])9 bằng cách sử dụng một tập hợp các phần tử có sẵn, trong trường hợp này là danh sách ba tên cá yêu thích. Gọi import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)24 's import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)25 phương pháp cho phép ta chèn một mục vào đầu bộ sưu tập của ta với import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)06 hiệu suất. import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)06 hiệu suất nghĩa là thời gian cần thêm một mục vào đầu import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)24 sẽ không tăng lên ngay cả khi import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)24 có hàng nghìn hoặc hàng triệu phần tử. Lưu ý: Mặc dù Kết luậnMô-đun from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])5 là một phần mạnh mẽ của thư viện chuẩn Python cho phép bạn làm việc với dữ liệu một cách ngắn gọn và hiệu quả. Hướng dẫn này bao gồm ba trong số các lớp được cung cấp bởi module from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])5 bao gồm from collections import Counter c = Counter() list = [1, 2, 3, 4, 5, 7, 8, 5, 9, 6, 10] Counter(list) Counter({1:5, 2:4}) list = [1, 2, 4, 7, 5, 1, 6, 7, 6, 9, 1] c = Counter(list) print(c[1])3 , from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])8 và from collections import defaultdict number = defaultdict(int) number['one'] = 1 number['two'] = 2 print(number['three'])9 . Từ đây, bạn có thể sử dụng tài liệu của module import collections d1 = collections.OrderedDict() d1['A'] = 10 d1['C'] = 12 d1['B'] = 11 d1['D'] = 13 d1['C'] = 15 for k, v in d1.items(): print (k, v)41 để tìm hiểu thêm về các lớp và tiện ích có sẵn khác. Để tìm hiểu thêm về Python nói chung, bạn có thể đọc loạt bài hướng dẫn Cách viết mã trong Python 3 của ta . Tags: Các tin liên quan Cách chuyển đổi kiểu dữ liệu trong Python 3 2020-08-07 Cách sử dụng hàm bản đồ Python 2020-08-03 Cách sử dụng quy trình con để chạy các chương trình bên ngoài trong Python 3 2020-07-30 Làm thế nào để đánh lừa một mạng neural trong Python 3 2020-07-30 Cách sử dụng hàm bộ lọc Python 2020-07-24 Cách sử dụng module pathlib để thao tác đường dẫn hệ thống tệp trong Python 3 2020-07-15 Cách tạo Slackbot bằng Python trên Ubuntu 20.04 2020-06-30 Cách sử dụng ThreadPoolExecutor trong Python 3 2020-06-23 Cách sử dụng module sqlite3 trong Python 3 2020-06-02 Cách thiết lập notebook Jupyter với Python 3 trên Ubuntu 20.04 và Kết nối qua Đường hầm SSH 2020-05-19 |