Tin tức và phân tích của tất cả các thiết bị di động

16 văn bản Python một dòng hữu ích giúp đơn giản hóa các tác vụ thông thường

Bạn có muốn viết mã Pythonic và thanh lịch không? Dưới đây là danh sách các lớp lót python hữu ích cho các tác vụ đơn giản.

Nếu là người mới bắt đầu lập trình Python, bạn sẽ dành thời gian tìm hiểu các cấu trúc dữ liệu cơ bản như danh sách và chuỗi. Một số thao tác trên các cấu trúc dữ liệu này có thể được thực hiện bằng các đoạn mã một dòng ngắn gọn.

Là một lập trình viên, bạn nên ưu tiên khả năng đọc và bảo trì hơn là rút ngắn mã. Nhưng trong Python, thật dễ dàng để tìm ra một dòng tuân theo các phương pháp viết mã tốt.

Trong bài viết này, chúng ta sẽ tập trung vào một dòng cho các tác vụ xử lý chuỗi và danh sách đơn giản trong Python.

Hãy bắt đầu!

Tạo danh sách số

Cách đơn giản nhất để tạo danh sách các số là sử dụng hàm range(). Hàm range() trả về một đối tượng phạm vi có thể được đưa vào danh sách. Sử dụng range(num) sẽ cung cấp cho bạn một chuỗi 0, 1, 2,…, số-1.

>>> nums = list(range(10))
>>> nums
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Tìm hiểu thêm về cách sử dụng hàm range().

Bạn cũng có thể sử dụng hàm range() cùng với giá trị bước tùy chọn. Vì vậy, phạm vi (bắt đầu, kết thúc, bước) sẽ cung cấp chuỗi bắt đầu, bắt đầu + bước, bắt đầu + 2* bước và vân vân. Giá trị cuối cùng sẽ là start + k*step sao cho (start + k*step) < end và (start + (k+1)*bước) > kết thúc.

Tìm giá trị tối đa và tối thiểu trong danh sách

Bạn có thể sử dụng các hàm max và min tích hợp sẵn để tính toán các mục max và min trong danh sách tương ứng.

>>> min_elt, max_elt = min(nums), max(nums)
>>> min_elt
0
>>> max_elt
9

📑 Lưu ý về nhiều nhiệm vụ

Lưu ý rằng chúng ta đã gán cả hai giá trị min_elt và max_elt trong một câu lệnh gán. Python hỗ trợ nhiều bài tập như vậy. Điều này có thể hữu ích khi giải nén các bước lặp và gán giá trị cho nhiều biến cùng một lúc.

Loại bỏ các bản sao khỏi danh sách

Một thao tác phổ biến khác là xóa các bản sao khỏi danh sách python. Điều này là cần thiết khi bạn chỉ cần làm việc với các giá trị duy nhất. Cách dễ nhất để thực hiện việc này là chuyển đổi danh sách thành một tập hợp.

Tập hợp là một cấu trúc dữ liệu tích hợp, tất cả đều là duy nhất và có thể được băm.

>>> nums1 = [2,4,7,9,7,10]

Trong phần tử nums1 7 xảy ra hai lần. Truyền nó trên một bộ sẽ loại bỏ bản sao (ở đây 7), để lại cho chúng tôi một danh sách các giá trị duy nhất.

Vì chúng ta vẫn cần làm việc với một danh sách nên chúng ta sẽ chuyển tập hợp đó trở lại danh sách. Thao tác này có thể được thực hiện với dòng mã sau:

>>> nums1 = list(set(nums1))
>>> nums1
[2, 4, 7, 9, 10]

📒 Để tìm hiểu thêm về các kỹ thuật khác để xóa trùng lặp khỏi danh sách python, hãy xem hướng dẫn này.

Đếm số lần xuất hiện trong danh sách

Để đếm số lần một mục xuất hiện trong danh sách, bạn có thể sử dụng phương thức count() tích hợp sẵn. list.count(elt) trả về số lần xuất hiện của elt trong danh sách.

>>> nums
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Đây 7 xuất hiện một lần trong danh sách số, do đó phương thức count() trả về 1.

>>> nums.count(7)
1

Kiểm tra xem tất cả các mục trong danh sách có thỏa mãn điều kiện không

Để kiểm tra xem tất cả các phần tử trong danh sách có thỏa mãn điều kiện hay không, bạn có thể sử dụng hàm all() có sẵn của Python.

Hàm all() lấy một đối số có thể lặp lại và trả về True nếu tất cả các mục trong iterable là True (hoặc true).

Ở đây chúng tôi muốn kiểm tra xem tất cả các phần tử trong danh sách nums2 có phải là số lẻ hay không.

>>> nums2 = [3,4,7,11,21,67,12]

Chúng ta có thể sử dụng khả năng hiểu danh sách để xây dựng danh sách các giá trị boolean và chúng ta có thể chuyển danh sách đó làm đối số cho all().

ở đây num%2!=0 sẽ sai đối với các phần tử 4 và 12, là số chẵn. Do đó, danh sách các giá trị boolean được xây dựng bằng biểu thức danh sách sẽ đánh giá là Sai (và tất cả(danh sách) trả về Sai).

>>> all([num%2!=0 for num in nums2])
False

💡 Lưu ý rằng tất cả ([]) (all(any-empty-iterable) trả về True.

Kiểm tra xem có mục nào trong danh sách thỏa mãn điều kiện không

Để kiểm tra xem phần tử nào trong danh sách có đáp ứng điều kiện hay không, bạn có thể sử dụng hàm Any(). Any(some-list) trả về True nếu có ít nhất một mục là True.

>>> nums2 = [3,4,7,11,21,67,12]

Như trong ví dụ trước, chúng tôi sử dụng tính năng hiểu danh sách để có được danh sách các giá trị boolean. Danh sách số chứa các số chẵn. Vì vậy, Any() trả về True.

>>> any([num%2 for num in nums2])
True

Đảo ngược chuỗi

Chuỗi là bất biến trong Python, vì vậy nếu bạn muốn đảo ngược một chuỗi, bạn chỉ có thể lấy một bản sao đã đảo ngược của chuỗi đó. Có hai cách tiếp cận phổ biến—cả hai đều có thể được viết dưới dạng dòng đơn trong Python—sử dụng các hàm tách chuỗi và hàm dựng sẵn.

Sử dụng cắt chuỗi

Việc cắt chuỗi có giá trị bước âm sẽ trả về một lát của chuỗi bắt đầu từ cuối. Cú pháp là một chuỗi[start:stop:step]. Vậy cài đặt bước mang lại điều gì -1 và bỏ qua các chỉ mục bắt đầu và dừng?

Trả về bản sao của chuỗi bắt đầu từ cuối chuỗi, bao gồm từng ký tự.

>>> str1[::-1]
'olleh'

Sử dụng hàm đảo ngược().

Hàm tích hợp đảo ngược() trả về một trình vòng lặp ngược cho một chuỗi.

>>> reversed(str1)
<reversed object at 0x008BAF70>
>>> for char in str1:
...     print(char)
...
h
e
l
l
o

Nó có thể được sử dụng kết hợp với phương thức join() như sau:

>>> ''.join(reversed(str1))
'olleh'

Chuyển đổi một chuỗi thành danh sách các ký tự

Giả sử chúng ta muốn chia một chuỗi thành một danh sách các ký tự. Chúng ta có thể làm điều này với một biểu thức hiểu danh sách.

>>> str1 = 'hello'

Hiểu danh sách là một số biểu thức dòng đơn mạnh mẽ nhất trong Python.

📒 Tìm hiểu thêm về cách hiểu danh sách trong Python.

Chúng tôi đi qua chuỗi và thu thập từng ký tự.

>>> chars = [char for char in str1]
>>> chars
['h', 'e', 'l', 'l', 'o']

Để tách một chuỗi dài hơn thành một danh sách các chuỗi trên mỗi lần xuất hiện khoảng trắng, bạn có thể sử dụng phương thức Split().

>>> str2 = 'hello world'
>>> str2.split()
['hello', 'world']

Chúng ta đã biết cách sử dụng khả năng hiểu danh sách để chia một chuỗi thành một danh sách các ký tự. Trong ví dụ này, chúng tôi đã thu thập tất cả các ký tự bằng cách duyệt qua chuỗi.

Ở đây chúng ta cần duyệt qua chuỗi và chỉ thu thập các con số. Làm thế nào để làm nó?

  • Chúng ta có thể đặt điều kiện lọc trong biểu thức hiểu danh sách bằng phương thức isdigit().
  • c.isdigit() trả về True nếu c là một chữ số; nếu không nó sẽ trả về Sai.
>>> str3 = 'python3'
>>> digits = [c for c in str3 if c.isdigit()]
>>> digits
['3']

Kiểm tra xem một chuỗi có bắt đầu bằng một chuỗi con được chỉ định không

Bạn có thể sử dụng phương thức stringstartswith() để kiểm tra xem một chuỗi có bắt đầu bằng một chuỗi con cụ thể hay không. str1.startswith(substring) trả về True nếu str1 bắt đầu bằng một chuỗi con. Ngược lại, nó trả về Sai.

Dưới đây là một số ví dụ:

>>> str4 = 'coding'
>>> str4.startswith('co')
True
>>> str5 = 'python'
>>> str5.startswith('co')
False

Kiểm tra xem một chuỗi có kết thúc bằng một chuỗi con được chỉ định không

Như bạn có thể đoán, để kiểm tra xem một chuỗi có kết thúc bằng một chuỗi con nhất định hay không, bạn có thể sử dụng phương thức endwith().

>>> str5 = 'python'
>>> str5.endswith('on')
True

Chúng ta cũng có thể sử dụng phương thức chuỗi trong biểu thức danh sách để có được danh sách các giá trị boolean.

>>> strs = ['python','neon','nano','silicon']
>>> ends_with = [str.endswith('on') for str in strs]
>>> ends_with
[True, True, False, True]

Nối các mục danh sách thành một chuỗi

Chúng ta đã biết cách chia một chuỗi thành một danh sách các ký tự. Bây giờ tôi làm cách nào để thực hiện thao tác chuỗi ngược?

Bạn có thể sử dụng phương thức chuỗi join() cho mục đích này: Separator.join(some-lists).

Chúng tôi chỉ muốn nối các mục trong danh sách thành một chuỗi duy nhất; chúng tôi không cần bất kỳ dấu phân cách nào. Vì vậy, chúng tôi đặt dấu phân cách thành một chuỗi trống.

>>> list_1 = ['p','y','t','h','o','n','3']
>>> ''.join(list_1)
'python3'

Tạo một từ điển python

Giống như việc hiểu danh sách có thể giúp chúng ta xây dựng danh sách mới từ các lần lặp hiện có, việc hiểu từ điển có thể giúp chúng ta xây dựng các từ vựng mới từ các lần lặp hiện có.

Khả năng hiểu từ điển của Python là công cụ đơn giản mạnh mẽ có thể giúp bạn xây dựng các công cụ hỗ trợ tạo từ điển nhanh chóng.

Ở đây chúng ta có tên là danh sách các chuỗi.

>>> names = ['Joe','Amy','Jake','Florence']

Chúng tôi tạo name_d, một từ điển chứa các chuỗi tên làm khóa và độ dài chuỗi làm giá trị.

>>> names_d = {name:len(name) for name in names}
>>> names_d
{'Joe': 3, 'Amy': 3, 'Jake': 4, 'Florence': 8}

Gán giá trị có điều kiện cho biến

Đôi khi có thể cần phải gán giá trị cho các biến tùy thuộc vào một điều kiện cụ thể.

Ví dụ: bạn có thể đọc thông tin đầu vào của người dùng, chẳng hạn như tuổi của một người. Tùy thuộc vào giá trị đầu vào, bạn có thể quyết định xem họ có thể tham gia nhóm hay không.

Để thực hiện phép gán có điều kiện này trong Python, bạn có thể viết dòng lệnh sau bằng cách sử dụng toán tử ternary.

>>> age = 21
>>> allowed = True if age >= 18 else False
>>> allowed
True

🔖 Tìm hiểu về toán tử bậc ba trong Python.

Tạo tất cả các hoán vị

Hoán vị đề cập đến sự sắp xếp có thể có của các phần tử trong một nhóm. Nếu có n phần tử duy nhất trong một nhóm thì có n! những cách có thể sắp xếp chúng – do đó n! hoán vị.

Hãy sử dụng các chữ cái sau trong danh sách:

>>> letters = ['a','b','c']

Bạn có thể sử dụng các hoán vị từ mô-đun itertools để tạo ra tất cả các hoán vị có thể có của một lần lặp nhất định.

>>> letters_p = permutations(letters)
>>> letters_p
<itertools.permutations object at 0x0127AF50>

Như bạn có thể thấy, việc sử dụng permutations(iterable) trả về một đối tượng hoán vị mà chúng ta có thể lặp qua vòng lặp for:

>>> for p in letters_p:
...     print(p)
...
('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')

Nhưng chúng ta có thể viết lại nó dưới dạng biểu thức một dòng bằng cách chuyển đối tượng hoán vị vào danh sách:

>>> letters_p = list(permutations(letters))
>>> letters_p
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]

Có ba yếu tố độc đáo ở đây và ở đó 3!=6 những hoán vị có thể có.

Tạo tập hợp con danh sách

Đôi khi có thể cần phải xây dựng tất cả các tập hợp con có thể có kích thước nhất định từ một danh sách hoặc các tập hợp con khác. Hãy sử dụng danh sách các chữ cái và lấy tất cả các danh sách phụ có kích thước 2.

Để làm điều này, chúng ta có thể sử dụng các kết hợp từ mô-đun itertools như:

>>> from itertools import combinations
>>> letters_2 = list(combinations(letters,2))
>>> letters_2
[('a', 'b'), ('a', 'c'), ('b', 'c')]

Ứng dụng

Trong hướng dẫn này, chúng ta đã xem xét một số câu lệnh đơn giản hữu ích trong Python để thực hiện các thao tác với danh sách và chuỗi phổ biến. Chúng tôi cũng đã học các lớp lót, chẳng hạn như danh sách Python và biểu thức từ điển, đồng thời học cách sử dụng chúng kết hợp với các hàm dựng sẵn để hoàn thành các tác vụ mong muốn.

Đối với bước tiếp theo, hãy xem danh sách các dự án Python thân thiện với người mới bắt đầu.