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

Cú pháp, ví dụ và trường hợp sử dụng

Khi làm việc với các phép lặp trong Python, việc tìm số phần tử có trong các phép lặp là một thao tác phổ biến. Tìm hiểu cách sử dụng len tích hợp của python để tìm độ dài vòng lặp và hơn thế nữa.

Python cung cấp một tập hợp các cấu trúc dữ liệu có sẵn và một tập hợp các phương thức để làm việc với chúng. Ngoài ra, còn có các hàm dựng sẵn rất hữu ích khi làm việc với các cấu trúc dữ liệu này. Một hàm như vậy là len() cung cấp cho bạn số phần tử có trong iterable.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng hàm len() với danh sách, bộ dữ liệu, chuỗi, v.v. Chúng ta cũng sẽ thấy một số trường hợp sử dụng phổ biến.

Chúng ta bắt đầu thôi!👩‍🏫

Cú pháp Python cho hàm len()

Đây là cú pháp sử dụng hàm len của Python:

len(iterable)

Như bạn có thể thấy, hàm len() yêu cầu một tham số, đó là bất kỳ tham số lặp hợp lệ nào. Một iterable thường là một trong các danh sách, bộ dữ liệu hoặc chuỗi. Nhưng nó cũng có thể là bất kỳ loại hợp lệ nào khác.

Chúng ta thấy cú pháp của hàm len() rất đơn giản. Sau đó hãy chuyển sang mã hóa một số ví dụ.

📑 Đối với các ví dụ về mã trong hướng dẫn này, bạn có thể viết mã cùng nhau bằng Python REPL.

Sử dụng len() với Iterables

Với trình tự

Bạn có thể sử dụng hàm len() để tìm độ dài của các lần lặp như danh sách, bộ dữ liệu và chuỗi.

Đây là một ví dụ:

>>> nums = [9,3,6,1,2]
>>> len(nums)
5

>>> nums_tup = (9,3,6,1,2)
>>> len(nums_tup)
5

Đối với những cấu trúc dữ liệu chứa một chuỗi, các phần tử thường được truy cập bằng chỉ mục của chúng hoặc lấy một lát (chuỗi tiếp theo) nếu cần.

với các bộ sưu tập khác

Bạn cũng có thể sử dụng len() với các bộ sưu tập Python khác như bộ và từ điển.

Các cấu trúc dữ liệu này là các bộ sưu tập không có thứ tự. Mặc dù bạn có thể không quan tâm đến việc đặt hàng các mặt hàng nhưng việc nhận được tổng số mặt hàng trong bộ sưu tập của bạn vẫn đáng giá.

>>> nums_set = set(nums)
>>> len(nums_set)
5

>>> prices = {'Notebook':5,'Pencil case':7,'Bookmarks':3,'Pens':1,'Markers':8}
>>> len(prices)
5

Các trường hợp sử dụng điển hình cho len() trong Python

Cho đến nay chúng ta đã thấy các ví dụ đơn giản về cách sử dụng len() để lấy số phần tử trong một iterable. Bây giờ hãy xem chúng ta có thể áp dụng điều này vào thực tế ở đâu.

# 1. Lặp lại bằng vòng lặp for

Vòng lặp for của Python cung cấp một cấu trúc để lặp qua các phần tử iterable trong phần tử for theo cú pháp iterable. Nhưng nếu bạn muốn truy cập vào chỉ mục của từng mục thay vì chính mục đó hoặc cả chỉ mục và các mục cùng nhau, bạn có thể sử dụng hàm range() như được hiển thị:

>>> nums = [9,2,4,7,8]
>>> for i in range(len(nums)):
...      print(f"Index {i}: {nums[i]}")

Bởi vì range(N) cung cấp cho bạn một chuỗi các số nguyên 0,1,2,…,N- 1việc sử dụng range(len(nums)) sẽ cung cấp cho chúng ta một tập hợp các chỉ mục hợp lệ để duyệt qua.

# Output
Index 0: 9
Index 1: 2
Index 2: 4
Index 3: 7
Index 4: 8

Tuy nhiên, cách được khuyến nghị để truy cập chỉ mục và phần tử trong Python là sử dụng hàm liệt kê:

>>> nums = [9,2,4,7,8]
>>> for idx,num in enumerate(nums):
...     print(f"Index {idx}: {num}")
# Output
Index 0: 9
Index 1: 2
Index 2: 4
Index 3: 7
Index 4: 8

#2. Vòng lặp có điều kiện sử dụng vòng lặp while

Giả sử bạn có một danh sách các số. Phương thức danh sách pop() xóa mục cuối cùng khỏi danh sách và trả về nó.

Miễn là độ dài của nums len(nums) lớn hơn 0 thì có thể loại bỏ ít nhất một mục.

>>> nums = [9,2,4,7,8]
>>> while len(nums) > 0:
...     nums.pop()
# Output
8
7
4
2
9

Ví dụ trên là cách viết nội dung rõ ràng hơn:

>>> nums = [9,2,4,7,8]
>>> while nums:
...     nums.pop()

while nums: khớp với điều kiện “danh sách while không trống”.

#3. Kiểm tra và xác nhận độ dài của các phần tử lặp

Một cách sử dụng phổ biến khác của hàm len là kiểm tra và xác minh độ dài của các lần lặp nhất định.

Ở đây chúng tôi xác minh rằng tên người dùng là một chuỗi hợp lệ dựa trên độ dài (được tính bằng hàm len()):

>>> username = "another-random-user"
>>> if len(username) > 10:
...     print("Username too long; should be 10 characters long at max.")
... elif len(username) < 5:
...     print("Username too short; should be at least 5 characters long.")
... else:
...     print("Valid username!")
Username too long; should be 10 characters long at max.

#4. Hiểu danh sách và từ điển

Khả năng hiểu Python cung cấp cú pháp ngắn gọn để xây dựng các lần lặp mới từ các lần lặp hiện có. Chúng ta có thể sử dụng các hàm dựng sẵn trong một biểu thức một cách dễ hiểu.

Danh sách hiểu

Trong phần hiểu danh sách này, chúng ta sử dụng hàm len() để lấy độ dài của mỗi chuỗi trong danh sách ngôn ngữ.

>>> languages = ['Python','C','Rust','JavaScript']
>>> len_langs = [len(lang) for lang in languages]
>>> len_langs
[6, 1, 4, 10]

Hiểu từ điển

Theo nghĩa từ điển này, chúng tôi sử dụng danh sách các ngôn ngữ và hàm len() để xây dựng từ điển:

>>> languages = ['Python','C','Rust','JavaScript']
>>> lang_len = {lang:len(lang) for lang in languages}
>>> lang_len
{'Python': 6, 'C': 1, 'Rust': 4, 'JavaScript': 10}

Ở đây các khóa và giá trị lần lượt là chuỗi ngôn ngữ và độ dài của chuỗi ngôn ngữ.

#5. Một tham số quan trọng trong việc sắp xếp tùy chỉnh

Python có phương thức Sort() tích hợp sẵn để sắp xếp các danh sách Python tại chỗ và hàm được sắp xếp() để sắp xếp danh sách và các lần lặp khác.

Trong cả hai trường hợp, bạn có thể sử dụng tham số key để tùy chỉnh cách sắp xếp.

Ở đây chúng tôi sắp xếp danh sách các ngôn ngữ dựa trên độ dài chuỗi.

>>> languages = ['Python','C','Rust','JavaScript']
>>> languages.sort(key=len)
>>> languages
['C', 'Rust', 'Python', 'JavaScript']

Trong đoạn mã sau, chúng ta sử dụng hàm được sắp xếp () để lấy danh sách được sắp xếp.

>>> languages = ['Hindi','English','German','French']
>>> sorted(languages,key=len)
['Hindi', 'German', 'French', 'English']

Trong ví dụ này, cả “tiếng Đức” và “tiếng Pháp” đều có po 6 nhân vật. Vì được sắp xếp() thực hiện sắp xếp ổn định nên thứ tự trong danh sách ban đầu được giữ nguyên.

#6. Độ dài của mảng NumPy

Bạn cũng có thể sử dụng len() với các cấu trúc dữ liệu khác như NumPy Arrays.

>>> import numpy as np
>>> np_array = np.array([3,4,6,9])
>>> type(np_array)
<class 'numpy.ndarray'>
>>> len(np_array)
4

Trong trường hợp này, np_array là vector z 4 các phần tử. Vì vậy len(np_array) trả về 4là số phần tử có trong mảng.

Ma trận là một mảng hai chiều.

Hãy xem xét ví dụ sau. len(np_array) là 2đó là số hàng.

>>> matrix = [[1,2,3],[4,5,6]]
>>> np_array = np.array(matrix)
>>> np_array
array([[1, 2, 3],
       [4, 5, 6]])
>>> len(np_array)
2

Để hiểu điều này, chúng ta hãy quay trở lại ma trận. Chúng tôi có cấu trúc danh sách lồng nhau trong đó danh sách bên ngoài chứa hai danh sách lồng nhau. Và hàm len() trả về số mục trong vùng chứa (ở đây có hai danh sách):

>>> help(len)
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

Tuy nhiên, khi bạn bắt đầu làm việc với mảng nhiều chiều, bạn nên sử dụng thuộc tính hình dạng để thay thế.

>>> np_array.shape
(2, 3)

Những cạm bẫy thường gặp cần tránh khi sử dụng hàm len() của Python

Để kết thúc cuộc thảo luận của chúng ta, hãy thảo luận về một số cạm bẫy phổ biến cần tránh khi sử dụng hàm len trong Python.

Sử dụng len() với các kiểu dữ liệu không thể lặp lại

Chúng ta biết rằng hàm len chỉ lấy các lần lặp hợp lệ làm đối số. Điều này có nghĩa là nếu bạn gọi len với kiểu dữ liệu không hợp lệ và không thể lặp lại, bạn sẽ gặp lỗi.

Các loại không hợp lệ như vậy bao gồm các loại dữ liệu cơ bản như số nguyên, số float và booleans:

>>> len(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

>>> len(True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'bool' has no len()

>>> len(3.14)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'float' has no len()

Trong Python, trình tạo là các tùy chọn tiết kiệm bộ nhớ cho các trường hợp sử dụng yêu cầu tạo chuỗi. Đối tượng trình tạo trả về các phần tử của một chuỗi, theo yêu cầu, mỗi lần một phần tử. Nhưng đối tượng máy phát điện không có chiều dài.

Vì vậy, bạn sẽ gặp lỗi nếu cố gắng tính độ dài của đối tượng trình tạo:

>>> nums_sq = (i*i for i in range(10))
>>> nums_sq
<generator object <genexpr> at 0x0157DBC0>
>>> len(nums_sq)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'generator' has no len()

Sử dụng len() với các bộ có độ dài bằng một

Nếu bạn chỉ chèn một phần tử vào một bộ dữ liệu, Python sẽ hiểu nó là một phần tử đơn lẻ chứ không phải là một bộ dữ liệu.

Đây là một ví dụ:

>>> nums = (1)
>>> len(nums)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

Vì vậy, nếu bạn có một bộ dữ liệu chỉ có một phần tử, hãy khởi tạo nó là tuple_name = (elt, ) để nó được hiểu là một bộ dữ liệu:

>>> nums = (1,)
>>> len(nums)
1

Tóm lại

Dưới đây là tóm tắt những gì chúng tôi đã đề cập trong hướng dẫn này:

  • Có thể tìm thấy số phần tử trong bất kỳ lần lặp nào bằng cách sử dụng hàm len() trong Python. Cú pháp của hàm độ dài là len(any-valid-iterable).
  • Điều này bao gồm các chuỗi như danh sách, bộ dữ liệu và chuỗi. Và các bộ sưu tập khác như từ điển và bộ.
  • Hàm len() thường được sử dụng trong các vòng lặp và biểu thức ghép.
  • Bạn cũng có thể sử dụng hàm len() làm tham số chính khi muốn tùy chỉnh sắp xếp độ dài. Ví dụ: sắp xếp danh sách các chuỗi dựa trên độ dài của chúng.

Sau đó tìm hiểu cách sử dụng hàm sum() của Python.