HomeLập trìnhPythonKhả năng hiểu...

Khả năng hiểu Len, Pop, Chỉ mục và Danh sách


Danh sách trong Python tương tự như mảng trong JavaScript. Chúng là một trong những kiểu dữ liệu tích hợp trong Python được sử dụng để lưu trữ các bộ sưu tập dữ liệu.

sử dụng cơ bản

Cách tạo danh sách

Trống rỗng list được tạo bằng cách sử dụng một cặp dấu ngoặc vuông:

>>> empty_list = []
>>> type(empty_list)
<class 'list'>
>>> len(empty_list)
0

Một list có thể được tạo với các phần tử bằng cách đặt một danh sách các phần tử được phân tách bằng dấu phẩy bằng dấu ngoặc vuông. Danh sách cho phép các phần tử thuộc các loại khác nhau (không đồng nhất) nhưng phổ biến nhất là một loại (đồng nhất):

>>> homogeneous_list = [1, 1, 2, 3, 5, 8]
>>> type(homogeneous_list)
<class 'list'>
>>> print(homogeneous_list)
[1, 1, 2, 3, 5, 8]
>>> len(homogeneous_list)
6
>>> heterogeneous_list = [1, "Hello Campers!"]
>>> print(heterogeneous_list)
[1, "Hello Campers!"]
>>> len(heterogeneous_list)
2

Các list hàm tạo cũng có thể được sử dụng để tạo một list:

>>> empty_list = list()                            # Creates an empty list
>>> print(empty_list)
[]
>>> list_from_iterable = list("Hello campers!")    # Creates a list from an iterable.
>>> print(list_from_iterable)
['H', 'e', 'l', 'l', 'o', ' ', 'c', 'a', 'm', 'p', 'e', 'r', 's', '!']

Bạn cũng có thể sử dụng Khả năng hiểu danh sách để tạo danh sách mà chúng tôi sẽ đề cập ở phần sau của bài viết.

Truy cập các phần tử trong danh sách

>>> my_list = [1, 2, 9, 16, 25]
>>> print(my_list)
[1, 2, 9, 16, 25]

Không được lập chỉ mục

>>> my_list[0]
1
>>> my_list[1]
2
>>> my_list[2]
9

Bao quanh việc lập chỉ mục

>>> my_list[-1]
25
>>> my_list[-2]
16

Giải nén danh sách cho python-3

>>> print(*my_list)
1 2 9 16 25

Danh sách có thể thay đổi

lists là các thùng chứa có thể thay đổi. Bộ chứa có thể thay đổi là bộ chứa cho phép thay đổi các đối tượng được chứa bởi bộ chứa.

Các yếu tố từ một list có thể được trích xuất và sắp xếp lại bằng cách sử dụng khác list như chỉ mục.

>>> my_list = [1, 2, 9, 16, 25, 34, 53, 21]
>>> my_index = [5, 2, 0]
>>> my_new_list = [my_list[i] for i in my_index]
>>> print(my_new_list)
[34, 9, 1]

Liệt kê các phương thức

len()

Các len() phương thức trả về độ dài của một đối tượng, cho dù đó là danh sách, chuỗi, bộ hoặc từ điển.

Đọc thêm  Toán tử Python – Toán tử logic trong Python

len() nhận một đối số, có thể là một chuỗi (chẳng hạn như chuỗi, byte, bộ, danh sách hoặc phạm vi) hoặc bộ sưu tập (chẳng hạn như từ điển, tập hợp hoặc tập hợp cố định).

list1 = [123, 'xyz', 'zara'] # list
print(len(list1)) # prints 3 as there are 3 elements in the list1

str1 = 'basketball' # string
print(len(str1)) # prints 10 as the str1 is made of 10 characters

tuple1 = (2, 3, 4, 5) # tuple 
print(len(tuple1)) # prints 4 as there are 4 elements in the tuple1

dict1 = {'name': 'John', 'age': 4, 'score': 45} # dictionary
print(len(dict1)) # prints 3 as there are 3 key and value pairs in the dict1

index()

index() trả về lần xuất hiện/chỉ mục đầu tiên của phần tử trong danh sách được cung cấp làm đối số cho hàm.

numbers = [1, 2, 2, 3, 9, 5, 6, 10]
words = ["I", "love", "Python", "I", "love"]

print(numbers.index(9)) # 4
print(numbers.index(2)) # 1
print(words.index("I")) # 0
print(words.index("am")) # returns a ValueError as 'am' is not in the `words` list

Ở đây, đầu ra đầu tiên rất rõ ràng, nhưng đầu ra thứ hai và thứ ba có vẻ khó hiểu lúc đầu. Nhưng hãy nhớ index() trả về lần xuất hiện đầu tiên của phần tử và do đó trong trường hợp này 1 là các chỉ số trong đó 2"I" xảy ra đầu tiên trong danh sách tương ứng.

Ngoài ra, nếu một phần tử không được tìm thấy trong danh sách, một ValueError được trả lại như trong trường hợp lập chỉ mục "am" bên trong words danh sách.

đối số tùy chọn

Bạn cũng có thể sử dụng các đối số tùy chọn để giới hạn tìm kiếm của mình trong một chuỗi con cụ thể của danh sách:

words = ["I", "am", "a", "I", "am", "Pythonista"]

print(words.index("am", 2, 5)) # 4

Mặc dù phần tử được tìm kiếm giữa các chỉ số 2 (bao gồm) và 5 (không bao gồm), nhưng chỉ mục được trả về được tính tương ứng với phần đầu của danh sách đầy đủ thay vì đối số bắt đầu.

pop()

Các pop() phương thức loại bỏ và trả về phần tử cuối cùng từ danh sách.

Có một tham số tùy chọn là chỉ số của phần tử cần xóa khỏi danh sách. Nếu không có chỉ mục nào được chỉ định, pop() loại bỏ và trả về mục cuối cùng trong danh sách.

Đọc thêm  không thể giải nén đối tượng nontype không thể lặp lại – Cách khắc phục trong Python

Nếu chỉ mục được chuyển đến pop() phương thức không nằm trong phạm vi, nó sẽ ném IndexError: pop index out of range ngoại lệ.

cities = ['New York', 'Dallas', 'San Antonio', 'Houston', 'San Francisco'];

print "City popped is: ", cities.pop() # City popped is: San Francisco
print "City at index 2 is  : ", cities.pop(2) # City at index 2 is: San Antonio

Chức năng ngăn xếp cơ bản

Các pop() Phương pháp này thường được sử dụng kết hợp với append() để triển khai chức năng ngăn xếp cơ bản trong ứng dụng Python:

stack = []

for i in range(5):
    stack.append(i)

while len(stack):
    print(stack.pop())

Danh sách hiểu

Hiểu danh sách là một cách lặp qua danh sách để tạo danh sách mới dựa trên một số điều kiện. Lúc đầu, nó có thể gây nhầm lẫn nhưng một khi bạn đã quen với cú pháp thì nó rất mạnh mẽ và nhanh chóng.

Bước đầu tiên trong việc học cách sử dụng khả năng hiểu danh sách là xem xét cách truyền thống để lặp qua danh sách. Sau đây là một ví dụ đơn giản trả về một danh sách mới gồm các số chẵn.

# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]

# Empty list that will be populate with a loop
even_list = []

for number in some_list:
  if number % 2 == 0:
    even_list.append(number)

# even_list now equals [2, 8, 10]

Đầu tiên một danh sách được tạo ra với một số con số. Sau đó, bạn tạo một danh sách trống sẽ chứa kết quả của bạn từ vòng lặp. Trong vòng lặp, bạn kiểm tra xem mỗi số có chia hết cho 2 không và nếu có, bạn thêm nó vào dấu even_list. Điều này mất 5 dòng mã không bao gồm nhận xét và khoảng trắng không nhiều trong ví dụ này.

Bây giờ cho ví dụ hiểu danh sách.

# Example list for demonstration
some_list = [1, 2, 5, 7, 8, 10]

# List Comprehension
even_list = [number for number in some_list if number % 2 == 0]

# even_list now equals [2, 8, 10]

Một ví dụ khác, với hai bước tương tự: Sau đây sẽ tạo một danh sách các số tương ứng với các số trong my_starting_list nhân với 7.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]
my_new_list = []

for item in my_starting_list:
my_new_list.append(item * 7)

Khi mã này được chạy, giá trị cuối cùng của my_new_list Là: [7, 14, 21, 28, 35, 42, 49, 56]

Nhà phát triển sử dụng khả năng hiểu danh sách có thể đạt được kết quả tương tự bằng cách sử dụng khả năng hiểu danh sách sau đây, dẫn đến kết quả tương tự my_new_list.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8]

my_new_list = [item * 7 for item in my_starting_list]

Một công thức đơn giản để viết theo cách hiểu danh sách là:

Đọc thêm  Hàm any() và all() của Python – Được giải thích bằng các ví dụ

my_list = [{operation with input n} for n in {python iterable}]

Thay thế {operation with input n} tuy nhiên, bạn muốn thay đổi mục được trả về từ lần lặp lại. Ví dụ trên sử dụng n * 7 nhưng hoạt động có thể đơn giản hoặc phức tạp khi cần thiết.

Thay thế {python iterable} với bất kỳ lần lặp nào. Các loại trình tự sẽ phổ biến nhất. Một danh sách đã được sử dụng trong ví dụ trên, nhưng các bộ dữ liệu và phạm vi cũng rất phổ biến.

Khả năng hiểu danh sách thêm một phần tử từ danh sách hiện có vào danh sách mới nếu một số điều kiện được đáp ứng. Nó gọn gàng hơn, nhưng cũng nhanh hơn nhiều trong hầu hết các trường hợp. Trong một số trường hợp, tính năng hiểu danh sách có thể cản trở khả năng đọc, vì vậy nhà phát triển phải cân nhắc các tùy chọn của họ khi chọn sử dụng tính năng hiểu danh sách.

Ví dụ về hiểu danh sách với điều kiện

Luồng kiểm soát trong việc hiểu danh sách có thể được kiểm soát bằng cách sử dụng điều kiện. Ví dụ:

only_even_list = [i for i in range(13) if i%2==0]

Điều này tương đương với vòng lặp sau:

only_even_list = list()
for i in range(13):
  if i%2 == 0:
    only_even_list.append(i)

Khả năng hiểu danh sách cũng có thể chứa các điều kiện if lồng nhau. Xét vòng lặp sau:

divisible = list()
for i in range(50):
  if i%2 == 0:
    if i%3 == 0:
      divisible.append(i)

Sử dụng hiểu danh sách này có thể được viết là:

divisible = [i for i in range(50) if i%2==0 if i%3==0]

Câu lệnh If-Else cũng có thể được sử dụng cùng với việc hiểu danh sách.

list_1 = [i if i%2==0 else i*-1 for i in range(10)]

Thêm thông tin:



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status