this post was submitted on 25 Oct 2024
31 points (97.0% liked)

Python

6366 readers
4 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

πŸ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
πŸ’“ Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] FizzyOrange@programming.dev 7 points 3 weeks ago (7 children)

Zero surprises. It's the same as in any other language.

[–] CodeMonkey@programming.dev 3 points 3 weeks ago* (last edited 3 weeks ago) (5 children)

I was a bit surprised that deque is implemented as a linked list and not, for example, a ring buffer. It would mean that index reads would be constant time (though insert and delete at an index would be linear time), the opposite of using a linked list.

[–] eager_eagle@lemmy.world 1 points 2 weeks ago (4 children)

But a ring buffer is a FIFO data structure that can be implemented using linked lists. What ring buffer implementation did you have in mind?

[–] FizzyOrange@programming.dev 2 points 2 weeks ago (1 children)

Standard ring buffers or circular buffers are implemented as continuous vectors, with a read and write pointer.

Rust's VecDeque is a ring buffer: https://doc.rust-lang.org/std/collections/struct.VecDeque.html

[–] eager_eagle@lemmy.world -1 points 2 weeks ago (1 children)

Since VecDeque is a ring buffer, its elements are not necessarily contiguous in memory.

[–] FizzyOrange@programming.dev 2 points 2 weeks ago

No that's a subtly different thing. The storage is a contiguous vector, but because it is a ring buffer there must be one pair of adjacent elements that are not contiguous in memory. That's what that comment is saying.

But because it is only one discontinuity it doesn't affect algorithmic complexity, so it is still O(1) to access elements, unlike a linked list which is O(N).

If you google "circular buffer" there will be loads of diagrams that make it really obvious how it works.

load more comments (2 replies)
load more comments (2 replies)
load more comments (3 replies)