Hướng dẫn is a list an iterable python? - danh sách có phải là một con trăn có thể lặp lại không?

Python như bạn có nghĩa là nó

Cuộc gặp gỡ của chúng tôi với các vòng lặp đã giới thiệu thuật ngữ có thể điều chỉnh được-một đối tượng có thể được lặp lại trên mạng, chẳng hạn như trong một vòng lặp.

Definition::

Một điều có thể là bất kỳ đối tượng Python nào có khả năng trả lại các thành viên của mình một lần, cho phép nó được lặp lại trong một vòng lặp.iterable is any Python object capable of returning its members one at a time, permitting it to be iterated over in a for-loop.

Các ví dụ quen thuộc về các vòng lặp bao gồm danh sách, bộ dữ liệu và chuỗi - bất kỳ chuỗi nào như vậy có thể được lặp lại trong một vòng lặp. Chúng tôi cũng sẽ gặp các bộ sưu tập không theo trình tự quan trọng, như từ điển và bộ; Đây là những thứ lặp là tốt. Cũng có thể có một sự khác biệt mà người tạo ra, mỗi thành viên của mình khi lặp đi lặp lại - có nghĩa là nó không bao giờ lưu trữ tất cả các thành viên của mình trong bộ nhớ cùng một lúc. Chúng tôi dành toàn bộ phần cho các trình tạo, một loại lặp đặc biệt, bởi vì chúng rất hữu ích để viết mã hiệu quả.

Phần còn lại của phần này được dành riêng để làm việc với Iterables trong mã của bạn.

Note::

Một trong những đối tượng Python có bất kỳ đối tượng Python nào có phương pháp

# simple script for assigning contents of a list to variables
>>> my_list = [7, 9, 11]

>>> x = my_list[0]
>>> y = my_list[1]
>>> z = my_list[2]
3 hoặc bằng phương pháp
# simple script for assigning contents of a list to variables
>>> my_list = [7, 9, 11]

>>> x = my_list[0]
>>> y = my_list[1]
>>> z = my_list[2]
4 thực hiện ngữ nghĩa
# simple script for assigning contents of a list to variables
>>> my_list = [7, 9, 11]

>>> x = my_list[0]
>>> y = my_list[1]
>>> z = my_list[2]
5. Những chi tiết này sẽ trở nên nổi bật nếu bạn đọc qua mô -đun lập trình hướng đối tượng.

Các chức năng hoạt động trên Iterables

Dưới đây là một số chức năng tích hợp hữu ích chấp nhận lặp lại như đối số:

  • # simple script for assigning contents of a list to variables
    >>> my_list = [7, 9, 11]
    
    >>> x = my_list[0]
    >>> y = my_list[1]
    >>> z = my_list[2]
    
    6,
    # simple script for assigning contents of a list to variables
    >>> my_list = [7, 9, 11]
    
    >>> x = my_list[0]
    >>> y = my_list[1]
    >>> z = my_list[2]
    
    7,
    # simple script for assigning contents of a list to variables
    >>> my_list = [7, 9, 11]
    
    >>> x = my_list[0]
    >>> y = my_list[1]
    >>> z = my_list[2]
    
    8,
    # simple script for assigning contents of a list to variables
    >>> my_list = [7, 9, 11]
    
    >>> x = my_list[0]
    >>> y = my_list[1]
    >>> z = my_list[2]
    
    9: Xây dựng danh sách, tuple, từ điển hoặc thiết lập, từ nội dung của một thứ khác

  • # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    0: Tổng hợp nội dung của một điều khác.

  • # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    1: Trả về danh sách các nội dung được sắp xếp của một

  • # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    2: Trả về
    # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    3 và kết thúc lần lặp ngay lập tức nếu
    # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    4 là
    # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    3 cho bất kỳ mục nào trong ITBERBELDE.

  • # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    6: Trở lại
    # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    3 chỉ khi
    # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    4 là
    # assigning contents of a list to variables using iterable unpacking
    >>> my_list = [7, 9, 11]
    
    >>> x, y, z = my_list
    >>> print(x, y, z)
    7 9 11
    
    3 cho tất cả các mục trong ITBELBELBER.

  • >>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
    
    0: Trả về giá trị lớn nhất trong một điều khác.

  • >>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
    
    1: Trả về giá trị nhỏ nhất trong một điều khác.

# Examples of built-in functions that act on iterables
>>> list("I am a cow")
['I', ' ', 'a', 'm', ' ', 'a', ' ', 'c', 'o', 'w']

>>> sum([1, 2, 3])
6

>>> sorted("gheliabciou")
['a', 'b', 'c', 'e', 'g', 'h', 'i', 'i', 'l', 'o', 'u']

# `bool(item)` evaluates to `False` for each of these items
>>> any((0, None, [], 0))
False

# `bool(item)` evaluates to  `True` for each of these items
>>> all([1, (0, 1), True, "hi"])
True

>>> max((5, 8, 9, 0))
9

>>> min("hello")
'e'

Thủ thuật để làm việc với Iterables

Python cung cấp một số thủ thuật cú pháp của người Viking để làm việc với Iterables: Ứng dụng giải nén các vòng lặp và các phép lặp lại của các trò chơi. Mặc dù những thứ này có vẻ như là những điều không quan trọng ngay từ cái nhìn đầu tiên, nhưng chúng xứng đáng với sự chú ý của chúng tôi bởi vì chúng sẽ giúp chúng tôi viết mã sạch, dễ đọc. Viết mã sạch, có thể đọc được dẫn đến các thuật toán không có lỗi dễ hiểu. Hơn nữa, các thủ thuật này cũng sẽ tạo điều kiện thuận lợi cho việc sử dụng các tính năng Python tuyệt vời khác, như các câu chuyện hiểu, sẽ được giới thiệu trong các phần sắp tới.

"Giải nén" Iterables

Giả sử rằng bạn có ba giá trị được lưu trữ trong một danh sách và bạn muốn gán từng giá trị cho một biến riêng biệt. Đưa ra những bài học mà chúng tôi đã đề cập cho đến nay, bạn có thể sẽ viết mã sau:

# simple script for assigning contents of a list to variables
>>> my_list = [7, 9, 11]

>>> x = my_list[0]
>>> y = my_list[1]
>>> z = my_list[2]

Python cung cấp một chức năng cực kỳ hữu ích, được gọi là giải nén có thể lặp lại, cho phép chúng ta viết mã đơn giản, thanh lịch:iterable unpacking, which allows us to write the simple, elegant code:

# assigning contents of a list to variables using iterable unpacking
>>> my_list = [7, 9, 11]

>>> x, y, z = my_list
>>> print(x, y, z)
7 9 11

Đó là, trình thông dịch Python, nhìn thấy mô hình của các biến ở bên trái của bài tập, và sẽ giải nén các điều đó (tình cờ là một danh sách trong trường hợp này). Nó có vẻ không giống như nó từ ví dụ này, nhưng đây là một tính năng cực kỳ hữu ích của Python giúp cải thiện đáng kể khả năng đọc của mã!

Khả năng giải nén đặc biệt hữu ích trong bối cảnh thực hiện các vòng lặp trên các thiết bị lặp đi lặp lại. Ví dụ: giả sử chúng ta có một danh sách chứa các cặp của các cặp cấp tên:

>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]

Nhớ lại từ phần trước rằng nếu chúng ta lặp qua danh sách này, thì phép lặp lặp sẽ được gán cho từng bộ dữ liệu sau:

for entry in grades:
    print(entry)

sẽ in:

('Ashley', 93)
('Brad', 95)
('Cassie', 84)

Có khả năng chúng tôi sẽ muốn làm việc với tên học sinh và lớp của họ một cách độc lập (ví dụ: & nbsp; sử dụng tên để truy cập nhật ký và thêm giá trị lớp vào số liệu thống kê lớp của chúng tôi); Do đó, chúng tôi sẽ cần lập chỉ mục vào

>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
2 hai lần để gán nội dung của nó cho hai biến riêng biệt. Tuy nhiên, vì mỗi lần lặp của vòng lặp liên quan đến việc gán mẫu
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
3, chúng ta có thể sử dụng việc giải nén có thể lặp lại! Đó là, chúng ta có thể thay thế
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
2 bằng
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
5 và Python sẽ trực giác thực hiện việc giải nén theo từng nhiệm vụ của vòng lặp.

# The first iteration of this for-loop performs
# the unpacking assignment: name, grade = ("Ashley", 93)
# then the second iteration: name, grade = ("Brad", 95)
# and so-on
for name, grade in grades:
    print(name)
    print(grade)
    print("\n")

prints:

Ashley
93

Brad
95

Cassie
84

Mã for-loop này ngắn gọn và cực kỳ dễ đọc. Rất khuyến khích bạn sử dụng việc giải nén có thể lặp lại trong các bối cảnh như vậy.

Khả năng giải nén không hoàn toàn đơn giản như nó có vẻ. Điều gì xảy ra nếu bạn cung cấp 4 biến để giải nén, nhưng sử dụng một mục có thể chứa 10 mục? Mặc dù những gì chúng tôi đã đề cập cho đến nay truyền tải trường hợp sử dụng thiết yếu nhất, nhưng thật tốt khi biết rằng Python cung cấp một cú pháp thậm chí còn rộng hơn để giải nén các lỗi. Chúng tôi cũng sẽ thấy rằng việc giải nén có thể hữu ích khi tạo và sử dụng các chức năng.

Takeaway::

Python cung cấp một cú pháp kiểu dáng đẹp để giải nén các nội dung của một thứ có thể lặp lại - gán từng mục cho biến của riêng nó. Điều này cho phép chúng tôi viết mã trực quan, có thể đọc được khi thực hiện một vòng lặp trên một bộ sưu tập các vòng lặp.

Liệt kê iterables

Chức năng liệt kê tích hợp cho phép chúng ta lặp lại một cách lặp đi lặp lại, trong khi theo dõi số lần lặp:

# basic usage of `enumerate`
>>> for entry in enumerate("abcd"):
...    print(entry)
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')

Nói chung, chức năng

>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
6 chấp nhận một đầu vào có thể đầu vào và trả về một số lượng mới có thể tạo ra một bộ phận của số lần lặp và mục tương ứng từ số lượng khác. Do đó, các mục trong Itable đang được liệt kê. Để xem tiện ích của điều này, giả sử rằng chúng tôi muốn ghi lại tất cả các vị trí trong một danh sách có giá trị
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
7 được lưu trữ. Chúng ta có thể đạt được điều này bằng cách theo dõi số lần lặp của vòng lặp trong danh sách.

# track which entries of an iterable store the value `None`
none_indices = []
iter_cnt = 0  # manually track iteration-count

for item in [2, None, -10, None, 4, 8]:
    if item is None:
        none_indices.append(iter_cnt)
    iter_cnt = iter_cnt + 1

# `none_indices` now stores: [1, 3]

Chúng ta có thể đơn giản hóa mã này và tránh phải khởi tạo hoặc tăng biến

>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
8, bằng cách sử dụng
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
6 cùng với Tuple-Unpacking.

# simple script for assigning contents of a list to variables
>>> my_list = [7, 9, 11]

>>> x = my_list[0]
>>> y = my_list[1]
>>> z = my_list[2]
0

Takeaway::

Hàm liệt kê tích hợp nên được sử dụng (kết hợp với việc giải nén Iterator) bất cứ khi nào cần phải theo dõi số lần lặp của vòng lặp. Nó có giá trị để sử dụng điều này kết hợp với việc giải nén tuple.

Đọc hiểu: liệt kê

Sử dụng

for entry in grades:
    print(entry)
0, hàm
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
6 và tính năng không thể sử dụng trong vòng lặp để tạo danh sách:
for entry in grades:
    print(entry)
2

Đọc hiểu: Nó có được sắp xếp không?

Sử dụng luồng điều khiển và các công cụ lặp để xem liệu có thể sắp xếp các số không.

Biến

for entry in grades:
    print(entry)
3 phải được khởi tạo thành
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
7. Nếu điều đó không được sắp xếp,
for entry in grades:
    print(entry)
3 sẽ lưu trữ chỉ mục trong đó chuỗi lần đầu tiên rơi ra khỏi trật tự. Nếu có thể được sắp xếp, thì
for entry in grades:
    print(entry)
3 sẽ vẫn còn
>>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
7 và mã của bạn nên in được sắp xếp!

Ví dụ:

  • Cho

    for entry in grades:
        print(entry)
    
    8,
    for entry in grades:
        print(entry)
    
    3 sẽ lấy giá trị
    ('Ashley', 93)
    ('Brad', 95)
    ('Cassie', 84)
    
    0.

  • Với số lượng

    ('Ashley', 93)
    ('Brad', 95)
    ('Cassie', 84)
    
    1,
    for entry in grades:
        print(entry)
    
    3 phải là
    >>> grades = [("Ashley", 93), ("Brad", 95), ("Cassie", 84)]
    
    7 và mã của bạn nên in được sắp xếp!

Đọc các giải pháp tập thể dục hiểu: 

Tái tạo: Giải pháp

# simple script for assigning contents of a list to variables
>>> my_list = [7, 9, 11]

>>> x = my_list[0]
>>> y = my_list[1]
>>> z = my_list[2]
1

Nó có được sắp xếp không?: Giải pháp

# simple script for assigning contents of a list to variables
>>> my_list = [7, 9, 11]

>>> x = my_list[0]
>>> y = my_list[1]
>>> z = my_list[2]
2

Danh sách có phải không?

Một danh sách là một điều khác. Nhưng nó không phải là một người lặp. Nếu chúng tôi chạy phương thức __iter __ () trong danh sách của chúng tôi, nó sẽ trả về trình lặp. Một người lặp là một đối tượng có trạng thái nhớ ở đâu trong quá trình lặp.. But it is not an iterator. If we run the __iter__() method on our list, it will return an iterator. An iterator is an object with a state that remembers where it is during iteration.

Là danh sách có thể lặp lại hoặc iterator trong Python?

LƯU Ý: Mỗi iterator cũng là một người có thể đi được, nhưng không phải mọi người lặp lại đều là một người lặp trong Python. Ví dụ, một danh sách có thể sử dụng được nhưng một danh sách không phải là một trình lặp lại. Một tererator có thể được tạo từ một số ít có thể sử dụng hàm iter ().a list is iterable but a list is not an iterator. An iterator can be created from an iterable by using the function iter().

Là một danh sách không phải là Python?

Chẳng hạn, một đối tượng danh sách là có thể sử dụng được và một đối tượng STR cũng vậy.Các số danh sách và tên chuỗi là Iterables vì chúng tôi có thể lặp lại chúng (sử dụng vòng lặp trong trường hợp này).Trong bài viết này, chúng ta sẽ xem làm thế nào để kiểm tra xem một đối tượng có thể sử dụng được trong Python không.a list object is iterable and so is an str object. The list numbers and string names are iterables because we are able to loop over them (using a for-loop in this case). In this article, we are going to see how to check if an object is iterable in Python.

Điều gì có thể hiểu được trong Python?

Một điều có thể là bất kỳ đối tượng Python nào có khả năng trả lại các thành viên của mình một lần, cho phép nó được lặp lại trong một vòng lặp.Các ví dụ quen thuộc về các vòng lặp bao gồm danh sách, bộ dữ liệu và chuỗi - bất kỳ chuỗi nào như vậy có thể được lặp lại trong một vòng lặp.