Các bộ sưu tập cấu trúc dữ liệu giống như danh sách.Deque cung cấp điều này theo mặc định thông qua đối số maxlen
.
from collections import deque
numbers = "1 2 3 4 5 6 7 8 9 10 11 12 13"
arr = list[map[int, numbers.split[]]]
arr_bounded = deque[map[int, numbers.split[]], maxlen=10]
print["Unlimited:", arr]
print["Limit__10:", arr_bounded]
Đầu ra
Unlimited: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
Limit__10: deque[[4, 5, 6, 7, 8, 9, 10, 11, 12, 13], maxlen=10]
Chúng tôi là một cộng đồng thân thiện, tập trung vào ngành của các nhà phát triển, các chuyên gia CNTT, nhà tiếp thị kỹ thuật số và những người đam mê công nghệ gặp gỡ, học tập và chia sẻ kiến thức.
class MaxSizeList[list]:
def __init__[self, maxlen]:
self._maxlen = maxlen
def append[self, element]:
self.__delitem__[slice[0, len[self] == self._maxlen]]
super[MaxSizeList, self].append[element]
a = MaxSizeList[3]
print[a]
a.append["hey"]
print[a]
a.append["hi"]
print[a]
a.append["let's"]
print[a]
a.append["go"]
print[a]
Output:
[]
['hey']
['hey', 'hi']
['hey', 'hi', "let's"]
['hi', "let's", 'go']
Có giới hạn kích thước cho một danh sách trong Python không?
a.extend[["some", "more", "stuff"]]
print[a]
Theo mã nguồn, kích thước tối đa của danh sách là py_ssize_t_max/sizeof [PyObject*]. Trên một hệ thống 32bit thông thường, đây là [4294967295 /2] / 4 hoặc 536870912. Do đó, kích thước tối đa của danh sách Python trên hệ thống 32 bit là 536.870.912 phần tử.
['hi', "let's", 'go', 'some', 'more', 'stuff']
Có giới hạn số lượng mục trong danh sách Python không?
Do đó, kích thước tối đa của danh sách Apython trên hệ thống 32 bit là 536.870.912 yếu tố.
Câu trả lời được đề xuất
Chào Bumsfeld,
Tôi tin rằng cấu trúc dữ liệu mảng trong gói số/numpy vừa được đánh máy vừa không thể chống lại, giống như các mảng C [thực tế, tôi khá chắc chắn rằng các cấu trúc dữ liệu này là mảng C đội mũ python]. Thủ tục thanh toán:
//numeric.scipy.org
Nhảy để đăng
Cảm ơn G-Do cho thông tin của bạn, vì vậy Numpy cuối cùng đã thay thế Numeric và Numarray. Thú vị!
Khi tôi mã hóa trong C, tôi đã sử dụng lấy mẫu dữ liệu phòng thí nghiệm và đặt nó vào bộ đệm tròn hoặc vòng để giữ cho thứ đó không bị tràn. Đây là một cách dễ dàng để tính toán một di chuyển
Nhảy để đăng
Cảm ơn G-Do cho thông tin của bạn, vì vậy Numpy cuối cùng đã thay thế Numeric và Numarray. Thú vị!
Khi tôi mã hóa trong C, tôi đã sử dụng lấy mẫu dữ liệu phòng thí nghiệm và đặt nó vào bộ đệm tròn hoặc vòng để giữ cho thứ đó không bị tràn. Đây là một cách dễ dàng để tính toán một di chuyển 19 Junior Poster Chào Bumsfeld, Tôi tin rằng cấu trúc dữ liệu mảng trong gói số/numpy vừa được đánh máy vừa không thể chống lại, giống như các mảng C [thực tế, tôi khá chắc chắn rằng các cấu trúc dữ liệu này là mảng C đội mũ python]. Thủ tục thanh toán: //numeric.scipy.org
Vegaseat1.735 đồng nghiệp của Đội đạo đức giả của Daniweb 1,735 DaniWeb's Hypocrite Team Colleague
16 năm trướcCảm ơn G-Do cho thông tin của bạn, vì vậy Numpy cuối cùng đã thay thế Numeric và Numarray. Thú vị!
Khi tôi mã hóa trong C, tôi đã sử dụng lấy mẫu dữ liệu phòng thí nghiệm và đặt nó vào bộ đệm tròn hoặc vòng để giữ cho thứ đó không bị tràn. Đây là một cách dễ dàng để tính trung bình động.
Bạn có thể làm một điều tương tự trong Python bằng cách sử dụng danh sách và theo dõi chỉ mục. Khi chỉ mục đạt đến giới hạn bạn đã đặt, dữ liệu mới sẽ bắt đầu ở Index Zero một lần nữa.
Một hàng đợi làm cho đơn giản hơn, đặc biệt là thùng chứa deque, bởi vì bạn có thể thêm vào cuối và bật mặt trước. Đây là một ví dụ, tôi hy vọng bạn có thể thấy những gì đang xảy ra:
# the equivalent of a circular size limited list
# also known as ring buffer, pops the oldest data item
# to make room for newest data item when max size is reached
# uses the double ended queue available in Python24
from collections import deque
class RingBuffer[deque]:
"""
inherits deque, pops the oldest data to make room
for the newest data when size is reached
"""
def __init__[self, size]:
deque.__init__[self]
self.size = size
def full_append[self, item]:
deque.append[self, item]
# full, pop the oldest item, left most item
self.popleft[]
def append[self, item]:
deque.append[self, item]
# max size reached, append becomes full_append
if len[self] == self.size:
self.append = self.full_append
def get[self]:
"""returns a list of size items [newest items]"""
return list[self]
# testing
if __name__ == '__main__':
size = 5
ring = RingBuffer[size]
for x in range[9]:
ring.append[x]
print ring.get[] # test
"""
notice that the left most item is popped to make room
result =
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]
[3, 4, 5, 6, 7]
[4, 5, 6, 7, 8]
"""
Bumsfeld413 Gần như một bài đăng Virtuoso 413 Nearly a Posting Virtuoso
16 năm trướcCảm ơn G-Do cho thông tin của bạn, vì vậy Numpy cuối cùng đã thay thế Numeric và Numarray. Thú vị!
I guess the answer is yes.
Khi tôi mã hóa trong C, tôi đã sử dụng lấy mẫu dữ liệu phòng thí nghiệm và đặt nó vào bộ đệm tròn hoặc vòng để giữ cho thứ đó không bị tràn. Đây là một cách dễ dàng để tính trung bình động.
Bạn có thể làm một điều tương tự trong Python bằng cách sử dụng danh sách và theo dõi chỉ mục. Khi chỉ mục đạt đến giới hạn bạn đã đặt, dữ liệu mới sẽ bắt đầu ở Index Zero một lần nữa.
Một hàng đợi làm cho đơn giản hơn, đặc biệt là thùng chứa deque, bởi vì bạn có thể thêm vào cuối và bật mặt trước. Đây là một ví dụ, tôi hy vọng bạn có thể thấy những gì đang xảy ra:
...del mylist[0]
Vegaseat1.735 đồng nghiệp của Đội đạo đức giả của Daniweb 1,735 DaniWeb's Hypocrite Team Colleague
Khi tôi mã hóa trong C, tôi đã sử dụng lấy mẫu dữ liệu phòng thí nghiệm và đặt nó vào bộ đệm tròn hoặc vòng để giữ cho thứ đó không bị tràn. Đây là một cách dễ dàng để tính trung bình động.Bạn có thể làm một điều tương tự trong Python bằng cách sử dụng danh sách và theo dõi chỉ mục. Khi chỉ mục đạt đến giới hạn bạn đã đặt, dữ liệu mới sẽ bắt đầu ở Index Zero một lần nữa.
Một hàng đợi làm cho đơn giản hơn, đặc biệt là thùng chứa deque, bởi vì bạn có thể thêm vào cuối và bật mặt trước. Đây là một ví dụ, tôi hy vọng bạn có thể thấy những gì đang xảy ra:
...del mylist[0]
Bumsfeld413 Gần như một bài đăng Virtuoso
Vì vậy, mẹo là làm cho kích thước của bộ đệm vòng đủ lớn để giữ lại tất cả dữ liệu thích hợp đủ lâu? Tôi đoán câu trả lời là có.
15 năm trước
Tại sao không phải là một cái gì đó như: