Cái gì không thể lặp lại trong python?

Trong Python, các đối tượng có thể được phân loại thành một trong hai nhóm, có thể lặp lại hoặc không thể lặp lại. Nếu một đối tượng có khả năng trả về từng giá trị thành viên của nó thì có thể lặp lại; . Đối với các đối tượng không thể lặp lại, chúng ta chỉ phải coi nội dung là một đơn vị duy nhất; . Một số ví dụ phổ biến về các đối tượng có thể lặp lại là danh sách, bộ dữ liệu, bộ và từ điển

student_list=['Ravi','Shivam','Teja','Rohan']
student_tuple=('Ravi','Shivam','Teja','Rohan')
student_set={'Ravi','Shivam','Teja','Rohan'}
student_dict = {'name': 'Ravi', 'branch': 'CSE',   'year': 3 }

Trình lặp

Python có một đối tượng chuyên dụng được gọi là trình vòng lặp được sử dụng để lặp qua các đối tượng có thể lặp lại. Các trình lặp này được triển khai bằng hai phương thức, iter()iter()iter() và next()next()next(), thường được gọi là giao thức trình lặp. Nhiệm vụ của iter()iter()iter() là khởi tạo phương thức;

Cách sử dụng Iterator

Tạo một trình vòng lặp

iter()iter()iter() được sử dụng để tạo trình vòng lặp trên đối tượng có thể lặp lại. Trình lặp được tạo là một trình trích xuất giá trị trích xuất các giá trị liên tiếp từ đối tượng có thể lặp đến đối tượng mà nó được liên kết

itr = iter(student_list)

# 

Di chuyển trình vòng lặp

Sau khi trình vòng lặp được tạo, hàm tích hợp sẵn

next(itr)
# 'Ravi'
6 được sử dụng để lấy giá trị tiếp theo từ trình vòng lặp. Giá trị này sẽ bắt đầu từ phần tử đầu tiên

next(itr)
# 'Ravi'

Đoạn mã trên sẽ trả về phần tử đầu tiên từ danh sách, tôi. e. , RaviRaviRavi. Tương tự, khi chúng ta gọi lại, nó sẽ trả về phần tử tiếp theo trong danh sách

next(itr)
# 'Shivam'

Nếu tất cả các giá trị từ một trình vòng lặp đã được trả về, lệnh gọi

next(itr)
# 'Ravi'
6 tiếp theo sẽ tạo ra một ngoại lệ
next(itr)
# 'Ravi'
8. Mọi nỗ lực tiếp theo để lấy giá trị từ trình vòng lặp sẽ không thành công

Tóm lại, chúng ta có thể nói rằng, nếu chúng ta có một đối tượng có thể lặp lại (giả sử ppp), thì có thể lấy một trình vòng lặp qua nó bằng cách sử dụng iter(a) và mỗi lệnh gọi

next(itr)
# 'Ravi'
6 qua trình vòng lặp đã tạo sẽ nhận được giá trị tiếp theo từ ppp

Ngoại lệ JavaScript "không thể lặp lại" xảy ra khi giá trị được cung cấp ở phía bên tay phải của

next(itr)
# 'Shivam'
0, làm đối số của hàm chẳng hạn như
const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
0 hoặc
const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
1 hoặc ở phía bên phải của phép gán phá hủy mảng, không phải là

Thông điệp

TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) (V8-based)
TypeError: x is not iterable (Firefox)
TypeError: undefined is not a function (near '...[x]...') (Safari)

loại lỗi

const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
2

Có chuyện gì?

Giá trị được cung cấp ở phía bên tay phải của

next(itr)
# 'Shivam'
0 hoặc làm đối số của một hàm chẳng hạn như
const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
0 hoặc
const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
1 hoặc ở phía bên phải của phép gán phá hủy mảng, không phải là một đối tượng có thể lặp lại. Một iterable có thể là một loại iterable được tích hợp sẵn, chẳng hạn như
const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
6,
const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
7 hoặc
const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
8, một kết quả của trình tạo hoặc một đối tượng triển khai giao thức có thể lặp lại

ví dụ

Mảng phá hủy không thể lặp lại

const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);

Không thể lặp lại có thể trở thành

const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
9 trong một số môi trường thời gian chạy

Lặp lại các thuộc tính đối tượng

Trong JavaScript, các

itr = iter(student_list)

# 
50 không thể lặp lại trừ khi chúng triển khai giao thức có thể lặp lại. Do đó, bạn không thể sử dụng
next(itr)
# 'Shivam'
0 để lặp lại các thuộc tính của một đối tượng

itr = iter(student_list)

# 
5

Thay vào đó, bạn phải sử dụng

itr = iter(student_list)

# 
52 hoặc
itr = iter(student_list)

# 
53, để lặp lại các thuộc tính hoặc mục nhập của một đối tượng

itr = iter(student_list)

# 
9

Một tùy chọn khác cho trường hợp sử dụng này có thể là sử dụng một

const myobj = { arrayOrObjProp1: {}, arrayOrObjProp2: [42] };

const { arrayOrObjProp1: [value1], arrayOrObjProp2: [value2] } = myobj; // TypeError: object is not iterable

console.log(value1, value2);
8

next(itr)
# 'Ravi'
1

Lặp lại trên một trình tạo

Các hàm tạo là các hàm bạn gọi để tạo một đối tượng có thể lặp lại

next(itr)
# 'Ravi'
2

Khi chúng không được gọi, đối tượng

itr = iter(student_list)

# 
55 tương ứng với trình tạo có thể gọi được, nhưng không thể lặp lại. Việc gọi một trình tạo sẽ tạo ra một đối tượng có thể lặp lại sẽ lặp lại các giá trị được tạo ra trong quá trình thực thi trình tạo

next(itr)
# 'Ravi'
4

Lặp lại qua một lần lặp tùy chỉnh

Có thể tạo các lần lặp tùy chỉnh bằng cách triển khai phương thức

itr = iter(student_list)

# 
56. Bạn phải chắc chắn rằng phương thức iterator của bạn trả về một đối tượng là iterator, nghĩa là nó phải có phương thức tiếp theo

Cái nào trong số chúng không thể lặp lại?

all hoặc TypedArray. từ hoặc là phía bên tay phải của phép gán phá hủy mảng , không phải là đối tượng có thể lặp lại. Một iterable có thể là một loại iterable được tích hợp sẵn, chẳng hạn như Array , String hoặc Map , một kết quả của trình tạo hoặc một đối tượng triển khai giao thức iterable.

Chuỗi có thể lặp lại trong Python không?

Số danh sách và tên chuỗi có thể lặp lại vì chúng tôi có thể lặp qua chúng (sử dụng vòng lặp for trong trường hợp này).

Những loại nào có thể lặp lại trong Python?

Ví dụ về các lần lặp bao gồm tất cả các loại trình tự (chẳng hạn như list , str và tuple ) và một số loại không phải trình tự như dict , đối tượng tệp và đối tượng của bất kỳ lớp nào bạn xác định bằng phương thức __iter__() hoặc phương thức __getitem__()

Đối tượng Python nào có thể lặp lại?

Danh sách, bộ dữ liệu, từ điển và bộ đều là các đối tượng có thể lặp lại. Chúng là các thùng chứa có thể lặp lại mà bạn có thể lấy một trình vòng lặp từ.