Hướng dẫn python deque get element by index - python lấy phần tử theo chỉ mục

Nếu bạn đang sử dụng Python 2.x,

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
3 không phải là một lựa chọn tốt nếu bạn muốn tra cứu. Bạn có thể sử dụng
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
4 hoặc thực hiện những điều sau đây bằng cách sử dụng
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
5:

>>> def index(element, queue):
...     for i, ele in enumerate(queue):
...         if ele == element:
...             return i
...     raise ValueError("{} is not in queue".format(element))

>>> index(2, deque([1, 2, 3, 4]))
1

Ngoài ra, bạn có thể thực hiện hàng đợi của riêng mình:

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1

Cải thiện bài viết

Lưu bài viết

Deque là một hàng đợi kết thúc kép được triển khai bằng mô -đun Bộ sưu tập trong Python. Hãy cho chúng tôi xem làm thế nào chúng ta có thể có được giá trị đầu tiên và cuối cùng trong một deque.

Phương pháp 1: Truy cập các yếu tố theo chỉ mục của họ. & NBSP; Accessing the elements by their index. 

Cấu trúc dữ liệu deque từ mô -đun bộ sưu tập không có phương pháp PEEK, nhưng kết quả tương tự có thể đạt được bằng cách tìm nạp các phần tử bằng dấu ngoặc vuông. Phần tử đầu tiên có thể được truy cập & nbsp; sử dụng [0] và phần tử cuối cùng có thể được truy cập bằng [-1].

Python3

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
6
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
7
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
8
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
9

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
0____21
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
22____23
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
4
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
5
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
4
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
3
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
8
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
9
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
8
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
1
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
2

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
3
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
4

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
3
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
6
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
7
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
8

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
3
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
6
# get value at index i in deque, "queue"
queue[i]
1
# get value at index i in deque, "queue"
queue[i]
2
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
8

Output:

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good

Phương pháp 2: Sử dụng phương thức popleft () và pop ()Using the popleft() and pop() method

Phương thức popleft () được sử dụng để bật phần tử đầu tiên hoặc phần tử từ phía bên trái của hàng đợi và phương thức pop () để bật phần tử cuối cùng hoặc phần tử tạo thành phía bên phải của hàng đợi. Cần lưu ý rằng các phương pháp này cũng xóa các phần tử khỏi deque, vì vậy chúng không nên được ưu tiên khi chỉ tìm nạp phần tử đầu tiên và phần tử cuối cùng là mục tiêu.

Python3

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
6
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
7
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
8
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
9

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
0____21
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
22____23
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
4
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
5
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
4
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
3
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
8
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
9
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
8
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
1
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
2

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
3
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
4

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
3
deque([1, 2, 3])
4

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
3
deque([1, 2, 3])
6

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
3
deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])
4

Output:

deque(['Geeks', 'for', 'Geeks', 'is', 'good'])
Geeks
good
deque(['for', 'Geeks', 'is'])

Trong hướng dẫn này, chúng tôi sẽ xem xét làm thế nào để có được một giá trị trong một python deque bằng chỉ số của nó với sự trợ giúp của một số ví dụ.

Mô -đun

deque([1, 2, 3])
9 trong Python đi kèm với lớp
>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
3 mà bạn có thể sử dụng để thực hiện cấu trúc dữ liệu ngăn xếp hoặc hàng đợi trong Python. Deques hỗ trợ chủ đề an toàn, bộ nhớ hiệu quả và bật lên từ hai bên của deque với hiệu suất x x xấp xỉ cùng một trong hai hướng.Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction.

Nói một cách đơn giản, bạn có thể nghĩ về

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
3 trong Python như một cấu trúc dữ liệu giống như danh sách nhưng với việc chèn và loại bỏ các mục từ hai đầu (trái và phải) hiệu quả. Điều này làm cho chúng rất hữu ích khi thực hiện chức năng ngăn xếp hoặc hàng đợi trong Python.

Làm thế nào để có được một giá trị tại một chỉ số cụ thể trong một deque trong Python?

Hướng dẫn python deque get element by index - python lấy phần tử theo chỉ mục

Deques in Python giúp việc thêm và loại bỏ các phần tử từ hai đầu nhưng bạn cũng có thể sử dụng một chỉ mục để truy cập trực tiếp vào một phần tử bên trong deque.

Tương tự như danh sách, các deques trong Python được lập chỉ mục bắt đầu từ 0 và bạn có thể sử dụng ký hiệu

# get the value at index 1
print(queue[1])
2 để nhận giá trị ở một chỉ mục cụ thể trong một deque.

Sau đây là cú pháp -

# get value at index i in deque, "queue"
queue[i]

Điều này tương tự như cách bạn đã nhận được giá trị theo chỉ mục của nó trong các vòng lặp được đặt hàng khác (như danh sách, tuple, chuỗi, v.v.) trong Python.

Ví dụ

Bây giờ hãy xem xét một số ví dụ về việc sử dụng cú pháp trên

Ví dụ 1 - Nhận giá trị theo chỉ mục trong một deque

Đầu tiên, hãy để tạo ra một deque với một số yếu tố.

from collections import deque

# create a deque
queue = deque([1, 2, 3])
# print the deque
print(queue)

Output:

deque([1, 2, 3])

Ở đây, chúng tôi đã nhập lớp

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
3 từ mô -đun
deque([1, 2, 3])
9 và tạo một đối tượng deque,
# get the value at index 1
print(queue[1])
5 với một số số. Bạn có thể thấy rằng Deque chứa ba giá trị 1, 2 và 3.

Để có được giá trị bằng cách sử dụng chỉ mục của nó trong một deque, hãy sử dụng chỉ mục của nó bên trong ký hiệu

# get the value at index 1
print(queue[1])
2. Ví dụ, hãy để Lừa nhận được giá trị tại Index
# get value at index i in deque, "queue"
queue[i]
2 trong Deque ở trên.

# get the value at index 1
print(queue[1])

Output:

2

Chúng tôi nhận được giá trị tại Index 1 trong deque,

# get the value at index 1
print(queue[1])
5 là
# get the value at index 1
print(queue[1])
9.

Nếu bạn sử dụng một chỉ mục bên ngoài phạm vi chỉ mục của deque, bạn sẽ nhận được

2
0.

# get the value at index 3
print(queue[3])

Output:

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
0

Ở đây, chúng tôi đang cố gắng truy cập giá trị tại chỉ mục

2
1. Kể từ khi deque, ở đây, chỉ có các giá trị cho đến khi chỉ số
# get the value at index 1
print(queue[1])
9, chúng tôi nhận được
2
0.

Ví dụ 2 - Nhận giá trị theo chỉ mục trong một deque bị ràng buộc

Phương pháp này hoạt động tương tự cho các deques giới hạn (các vị trí có kích thước tối đa được chỉ định).

Ví dụ, hãy để Lôi tạo một deque bị ràng buộc và cố gắng truy cập một phần tử bằng chỉ mục của nó.

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
1

Output:

>>> class IndexedDeque(deque):
...     def index(self, element):
...         for i, ele in enumerate(self):
...             if ele == element:
...                 return i
...         raise ValueError("{} is not in queue".format(element))    

>>> d_list = IndexedDeque([1, 2, 3, 4])
>>> d_list.index(2)
1
2

Ở đây, chúng tôi đã tạo ra một deque giới hạn với

2
4 4 và ba yếu tố. Sau đó, chúng tôi đã nhận được giá trị tại chỉ mục
# get value at index i in deque, "queue"
queue[i]
2 trong deque bị ràng buộc này.

Bạn cũng có thể quan tâm đến -

  • Python - Chuyển đổi một chuỗi chuỗi thành một chuỗi
  • Python - Chuyển đổi một deque thành danh sách
  • Python - Nhận chỉ số giá trị tối đa trong Deque
  • Python - Nhận chỉ số giá trị tối thiểu trong Deque
  • Python - Nhận giá trị tối đa và tối thiểu trong một deque
  • Python - Kiểm tra xem một deque có trống không
  • Python - Số lần xuất hiện của một giá trị trong Deque
  • Python - Tạo một bản sao Deque
  • Python - xoay một deque sang phải và bên trái
  • Python - mở rộng Deque sang trái
  • Python - mở rộng Deque sang phải
  • Python - Nhận kích thước tối đa của một deque
  • Python - đảo ngược một deque
  • Python - Nhận chỉ số giá trị trong Deque
  • Python - Xóa phần tử theo giá trị trong deque
  • Python - Loại bỏ tất cả các yếu tố khỏi một deque (rõ ràng deque)
  • Python - phần tử nối vào một deque
  • Python - Phần tử nối vào bên trái trong Deque
  • Python - Yếu tố pop từ trái trong Deque
  • Python - yếu tố pop từ cuối trong deque
  • Python - phần tử chèn tại một chỉ số nhất định trong deque


Đăng ký nhận bản tin của chúng tôi để biết thêm hướng dẫn và hướng dẫn thông tin. Chúng tôi không spam và bạn có thể từ chối bất cứ lúc nào.
We do not spam and you can opt out any time.

  • Piyush là một nhà khoa học dữ liệu đam mê sử dụng dữ liệu để hiểu mọi thứ tốt hơn và đưa ra quyết định sáng suốt. Trong quá khứ, anh ta làm việc như một nhà khoa học dữ liệu cho ZS và có bằng kỹ sư từ IIT Roorkee. Sở thích của anh ấy bao gồm xem cricket, đọc sách và làm việc trên các dự án phụ.

    Xem tất cả các bài viết

Bạn có thể lập chỉ mục vào một con trăn deque?

Chỉ mục () Phương thức của lớp deque trong Python Index () Tìm kiếm một phần tử được định nghĩa bởi tham số ELEM và trả về chỉ mục mà tại đó phần tử được tìm thấy trong Python deque. index() searches for an element as defined by the parameter elem and returns the index at which the element is found in the python deque.

Deque có chỉ số không?

STD :: Deque (Hàng đợi kết thúc kép) là một thùng chứa trình tự được lập chỉ mục cho phép chèn và xóa nhanh ở cả đầu và kết thúc của nó.Ngoài ra, chèn và xóa ở hai đầu của một deque không bao giờ làm mất hiệu lực con trỏ hoặc tham chiếu đến phần còn lại của các yếu tố. that allows fast insertion and deletion at both its beginning and its end. In addition, insertion and deletion at either end of a deque never invalidates pointers or references to the rest of the elements.

Python deque có nhanh hơn danh sách không?

Tất nhiên, nó có thể được thực hiện bằng cách sử dụng danh sách, nhưng với Deques, bạn đã có giao diện cho điều đó và nó nhanh hơn nhiều.it's much faster.

Popleft là gì?

Phương thức pop () được sử dụng để loại bỏ và trả về phần tử phù hợp nhất từ hàng đợi và phương thức popleft () được sử dụng để loại bỏ và trả về hầu hết các phần tử bên trái khỏi hàng đợi.remove and return left most element from the queue.