Hướng dẫn python combinaison - áo liền quần trăn

Python’s Itertool là một mô-đun cung cấp các chức năng khác nhau hoạt động trên các trình vòng lặp để tạo ra các trình vòng lặp phức tạp. Mô-đun này hoạt động như một công cụ nhanh, tiết kiệm bộ nhớ được sử dụng riêng lẻ hoặc kết hợp để tạo thành đại số trình lặp.

Ví dụ: giả sử có hai danh sách và bạn muốn nhân các phần tử của chúng. Có thể có một số cách để đạt được điều này. Người ta có thể sử dụng cách tiếp cận ngây thơ, tức là bằng cách lặp lại đồng thời các phần tử của cả hai danh sách và nhân chúng lên. Và một cách tiếp cận khác có thể là sử dụng hàm bản đồ, tức là bằng cách chuyển toán tử mul làm tham số đầu tiên cho hàm bản đồ và Lists làm tham số thứ hai và thứ ba cho hàm này. Hãy xem thời gian thực hiện của mỗi cách tiếp cận.

# Python program to demonstrate
# iterator module
 
 
import operator
import time
 
# Defining lists
L1 = [1, 2, 3]
L2 = [2, 3, 4]
 
# Starting time before map
# function
t1 = time.time()
 
# Calculating result
a, b, c = map(operator.mul, L1, L2)
 
# Ending time after map
# function
t2 = time.time()
 
# Time taken by map function
print("Result:", a, b, c)
print("Time taken by map function: %.6f" %(t2 - t1))
 
# Starting time before naive
# method
t1 = time.time()
 
# Calculating result using for loop
print("Result:", end = " ")
for i in range(3):
    print(L1[i] * L2[i], end = " ")
     
# Ending time after naive
# method
t2 = time.time()
print("\nTime taken by for loop: %.6f" %(t2 - t1))

output

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014

Trong ví dụ trên, có thể thấy rằng thời gian thực hiện bởi hàm bản đồ xấp xỉ một nửa thời gian thực hiện bởi vòng lặp for. Điều này cho thấy itertools là công cụ nhanh, tiết kiệm bộ nhớ.

Các loại trình vòng lặp khác nhau được cung cấp bởi mô-đun này là:

  • Infinite iterators
  • Combinatoric iterators
  • Terminating iterators
  • 1. Infinite iterators
  • 2.Combinatoric iterators(trình vòng lặp tổ hợp)
  • 3.Terminating iterators

1. Infinite iterators

2.Combinatoric iterators(trình vòng lặp tổ hợp)Infinite iterators).

3.Terminating iterators

Trình lặp trong Python là bất kỳ kiểu Python nào có thể được sử dụng với ‘vòng lặp for trong’. Danh sách Python, bộ giá trị, từ điển và bộ đều là ví dụ về trình vòng lặp có sẵn. Nhưng không nhất thiết một đối tượng vòng lặp phải cạn kiệt, đôi khi nó có thể là vô hạn. Loại trình vòng lặp như vậy được gọi là trình vòng lặp vô hạn(Infinite iterators).: Trình lặp này bắt đầu in từ số “bắt đầu” và in vô hạn. Nếu các bước được đề cập, các con số sẽ bị bỏ qua nếu bước khác là 1 theo mặc định. Xem ví dụ dưới đây để biết cách sử dụng với vòng lặp for in.

Python cung cấp ba loại trình lặp vô hạn:

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")

output

5 10 15 20 25 30

Trong ví dụ trên, có thể thấy rằng thời gian thực hiện bởi hàm bản đồ xấp xỉ một nửa thời gian thực hiện bởi vòng lặp for. Điều này cho thấy itertools là công cụ nhanh, tiết kiệm bộ nhớ.: Trình lặp này in tất cả các giá trị theo thứ tự từ vùng chứa đã truyền. Nó khởi động lại quá trình in từ đầu một lần nữa khi tất cả các phần tử được in theo cách tuần hoàn.

Các loại trình vòng lặp khác nhau được cung cấp bởi mô-đun này là:

# Python program to demonstrate
# infinite iterators
   
import itertools
   
count = 0
   
# for in loop
for i in itertools.cycle('AB'):
    if count > 7:
        break
    else:
        print(i, end = " ")
        count += 1

output

A B A B A B A B 
# Python program to demonstrate
# infinite iterators
   
import itertools
   
l = ['Cafe', 'dev', 'n']
   
# defining iterator
iterators = itertools.cycle(l)
   
# for in loop
for i in range(6):
       
    # Using next function
    print(next(iterators), end = " ")

output

Cafe dev n Cafe dev n 

Trong ví dụ trên, có thể thấy rằng thời gian thực hiện bởi hàm bản đồ xấp xỉ một nửa thời gian thực hiện bởi vòng lặp for. Điều này cho thấy itertools là công cụ nhanh, tiết kiệm bộ nhớ. Trình lặp này in lặp đi lặp lại giá trị đã truyền vô số lần. Nếu từ khóa tùy chọn num được đề cập, thì nó lặp lại số lần num.

Các loại trình vòng lặp khác nhau được cung cấp bởi mô-đun này là:

output

Printing the numbers repeatedly : 
[25, 25, 25, 25]

2.Combinatoric iterators(trình vòng lặp tổ hợp)

3.Terminating iterators

Trình lặp trong Python là bất kỳ kiểu Python nào có thể được sử dụng với ‘vòng lặp for trong’. Danh sách Python, bộ giá trị, từ điển và bộ đều là ví dụ về trình vòng lặp có sẵn. Nhưng không nhất thiết một đối tượng vòng lặp phải cạn kiệt, đôi khi nó có thể là vô hạn. Loại trình vòng lặp như vậy được gọi là trình vòng lặp vô hạn(Infinite iterators).

Python cung cấp ba loại trình lặp vô hạn:): Công cụ này tính toán sản phẩm theo cacte của các đầu vào lặp lại. Để tính toán sản phẩm của một tệp có thể lặp lại với chính nó, chúng tôi sử dụng đối số từ khóa lặp lại tùy chọn để chỉ định số lần lặp lại. Đầu ra của hàm này là các bộ giá trị theo thứ tự được sắp xếp.

count(start, step): Trình lặp này bắt đầu in từ số “bắt đầu” và in vô hạn. Nếu các bước được đề cập, các con số sẽ bị bỏ qua nếu bước khác là 1 theo mặc định. Xem ví dụ dưới đây để biết cách sử dụng với vòng lặp for in.

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
0

output

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
1

Thí dụ:(): Permutations() như tên gọi của chính nó được sử dụng để tạo ra tất cả các hoán vị có thể có của một biến có thể lặp lại. Tất cả các yếu tố được coi là duy nhất dựa trên vị trí của chúng chứ không phải giá trị của chúng. Hàm này nhận kích thước nhóm và kích thước nhóm có thể lặp lại, nếu giá trị của kích thước nhóm không được chỉ định hoặc bằng Không thì giá trị của kích thước nhóm sẽ trở thành độ dài của kích thước có thể lặp lại.

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
2

output

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
3

cycle(iterable):: Trình lặp này in tất cả các giá trị theo thứ tự từ vùng chứa đã truyền. Nó khởi động lại quá trình in từ đầu một lần nữa khi tất cả các phần tử được in theo cách tuần hoàn.(): Trình lặp này in tất cả các kết hợp có thể có (không thay thế) của vùng chứa được truyền vào các đối số trong kích thước nhóm được chỉ định theo thứ tự được sắp xếp.

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
4

output

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
5

Ví dụ 1:: Hàm này trả về một dãy con có độ dài n từ các phần tử của có thể lặp trong đó n là đối số mà hàm lấy để xác định độ dài của các dãy con được tạo bởi hàm. Các phần tử riêng lẻ có thể tự lặp lại trong hàm links_with_replacement.

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
6

output

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
7

3.Terminating iterators

Trình lặp trong Python là bất kỳ kiểu Python nào có thể được sử dụng với ‘vòng lặp for trong’. Danh sách Python, bộ giá trị, từ điển và bộ đều là ví dụ về trình vòng lặp có sẵn. Nhưng không nhất thiết một đối tượng vòng lặp phải cạn kiệt, đôi khi nó có thể là vô hạn. Loại trình vòng lặp như vậy được gọi là trình vòng lặp vô hạn(Infinite iterators).

Python cung cấp ba loại trình lặp vô hạn:

count(start, step): Trình lặp này bắt đầu in từ số “bắt đầu” và in vô hạn. Nếu các bước được đề cập, các con số sẽ bị bỏ qua nếu bước khác là 1 theo mặc định. Xem ví dụ dưới đây để biết cách sử dụng với vòng lặp for in.: Trình lặp này nhận hai đối số, mục tiêu có thể lặp lại và hàm sẽ được theo sau ở mỗi lần lặp giá trị trong mục tiêu. Nếu không có chức năng nào được chuyển, việc bổ sung diễn ra theo mặc định. Nếu đầu vào có thể lặp lại trống, đầu ra có thể lặp lại cũng sẽ trống.

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
8

output

Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12 
Time taken by for loop: 0.000014
9

Thí dụ: Hàm này được sử dụng để in tất cả các giá trị trong các mục tiêu có thể lặp lại lần lượt được đề cập trong các đối số của nó.

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
0

cycle(iterable):: Trình lặp này in tất cả các giá trị theo thứ tự từ vùng chứa đã truyền. Nó khởi động lại quá trình in từ đầu một lần nữa khi tất cả các phần tử được in theo cách tuần hoàn.

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
1

Ví dụ 1:: Hàm này được triển khai tương tự như chain () nhưng đối số ở đây là danh sách các danh sách hoặc bất kỳ vùng chứa có thể lặp lại nào khác.

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
2

ouput

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
1

compress(iter, selector): Trình lặp này chọn lọc các giá trị cần in từ vùng chứa đã truyền theo giá trị danh sách boolean được truyền như các đối số khác. Các đối số tương ứng với boolean true được in ra nếu không tất cả đều bị bỏ qua.: Trình lặp này chọn lọc các giá trị cần in từ vùng chứa đã truyền theo giá trị danh sách boolean được truyền như các đối số khác. Các đối số tương ứng với boolean true được in ra nếu không tất cả đều bị bỏ qua.

Thí dụ:

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
4

output

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
5

drop while (func, seq): Trình lặp này bắt đầu in các ký tự chỉ sau func. trong đối số trả về false lần đầu tiên.

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
6

output

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
7

drop while (func, seq): Trình lặp này bắt đầu in các ký tự chỉ sau func. trong đối số trả về false lần đầu tiên.

Thí dụ:

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
8

output

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
9

drop while (func, seq): Trình lặp này bắt đầu in các ký tự chỉ sau func. trong đối số trả về false lần đầu tiên. Trình lặp này in chọn lọc các giá trị được đề cập trong vùng chứa có thể lặp lại của nó được truyền dưới dạng đối số. Trình lặp này nhận 4 đối số, vùng chứa có thể lặp lại, vị trí bắt đầu, vị trí kết thúc và bước.

Thí dụ:

5 10 15 20 25 30
0

ouput

5 10 15 20 25 30
1

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
4 Trình vòng lặp này nhận một hàm và danh sách tuple làm đối số và trả về giá trị theo hàm từ mỗi bộ danh sách.

5 10 15 20 25 30
2

ouput

5 10 15 20 25 30
3

output Trình lặp này ngược lại với dropworthy (), nó in các giá trị cho đến khi hàm trả về false lần đầu tiên.

Thí dụ:

# Python program to demonstrate
# infinite iterators
   
import itertools
   
# for in loop
for i in itertools.count(5, 5):
    if i == 35:
        break
    else:
        print(i, end =" ")
4

ouput

5 10 15 20 25 30
5

output: – Trình vòng lặp này chia vùng chứa thành một số trình vòng lặp được đề cập trong đối số.

Thí dụ:

5 10 15 20 25 30
6

output

5 10 15 20 25 30
7

drop while (func, seq): Trình lặp này bắt đầu in các ký tự chỉ sau func. trong đối số trả về false lần đầu tiên.

Thí dụ:

5 10 15 20 25 30
8

output

5 10 15 20 25 30
9

drop while (func, seq): Trình lặp này bắt đầu in các ký tự chỉ sau func. trong đối số trả về false lần đầu tiên.mọi lúc mọi nơi tại đây.

filterfalse (func, seq): Như tên cho thấy, trình lặp này chỉ in các giá trị trả về false cho hàm đã truyền.

  • python.org

islice(iterable, start, stop, step): Trình lặp này in chọn lọc các giá trị được đề cập trong vùng chứa có thể lặp lại của nó được truyền dưới dạng đối số. Trình lặp này nhận 4 đối số, vùng chứa có thể lặp lại, vị trí bắt đầu, vị trí kết thúc và bước.

  • starmap (func., tuple list): Trình vòng lặp này nhận một hàm và danh sách tuple làm đối số và trả về giá trị theo hàm từ mỗi bộ danh sách.
  • take while (func, iterable): Trình lặp này ngược lại với dropworthy (), nó in các giá trị cho đến khi hàm trả về false lần đầu tiên.
  • 5 10 15 20 25 30
    4
    cafedev tại đây

tee(iterator, count): – Trình vòng lặp này chia vùng chứa thành một số trình vòng lặp được đề cập trong đối số.

  • zip_longest (iterable1, iterable2, fillval): Trình lặp này in các giá trị của các vòng lặp theo thứ tự. Nếu một trong các tệp lặp được in đầy đủ, các giá trị còn lại được lấp đầy bởi các giá trị được gán cho giá trị điền.
  • Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
  • Nguồn và Tài liệu tiếng anh tham khảo:
  • Tài liệu từ cafedev:
  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Tự học ML bằng Python từ cơ bản tới nâng cao.
  • Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
  • Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Group Facebook

Fanpage