Hướng dẫn is there a size limit for a list in python? - có giới hạn kích thước cho danh sách trong python không?

Nếu mục đích của bạn là làm cho đối tượng mới này hoạt động giống như một danh sách, hãy thực hiện nó gần với danh sách Python thực sự càng tốt bằng cách thừa hưởng hành vi của nó từ lớp list tích hợp. Sau đó mở rộng lớp học của bạn để thêm hành vi bạn muốn. Đây là một triển khai một phần:

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']

Bây giờ, tại sao tôi nói rằng đây là một triển khai "một phần"? Bởi vì có nhiều cách để thêm các yếu tố vào một danh sách. Ví dụ: nếu bạn thêm các dòng này vào cuối tập lệnh trên:

a.extend(["some", "more", "stuff"])
print(a)

Bạn sẽ thấy đầu ra này ở cuối:

['hi', "let's", 'go', 'some', 'more', 'stuff']

Ối. Công việc của bạn không được thực hiện. Chúng tôi đã ghi đè phương thức append, nhưng không phải là phương thức extend. Và có những người khác, như __setslice__, __mul__, v.v.

Về cơ bản, để tạo ra một triển khai hoàn chỉnh, bạn phải mở rộng lớp của mình để cung cấp các triển khai cho mọi phương thức tích hợp của lớp list có thể mở rộng độ dài của danh sách. Thực hiện

[]
['hey']
['hey', 'hi']
['hey', 'hi', "let's"]
['hi', "let's", 'go']
1 để xem tất cả các phương pháp "ma thuật" tích hợp của nó và tìm ra phương pháp nào bạn cần mở rộng.

Hàm Max () - Tìm phần tử lớn nhất của danh sách. Trong Python, có một hàm tích hợp tối đa () bạn có thể sử dụng để tìm số lớn nhất trong danh sách. Để sử dụng nó, hãy gọi Max () trên danh sách các số. Sau đó, nó trả về số lớn nhất trong danh sách đó.

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:

http://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ị!

http://numeric.scipy.org

Nhảy để đăng

Hướng dẫn is there a size limit for a list in python? - có giới hạn kích thước cho danh sách trong python khô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ị! 19 Junior Poster

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

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:

Hướng dẫn is there a size limit for a list in python? - có giới hạn kích thước cho danh sách trong python không?

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 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

Tất cả 5 câu trả lời

# 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]
"""

Hướng dẫn is there a size limit for a list in python? - có giới hạn kích thước cho danh sách trong python không?

G-DO19 Poster Junior 413 Nearly a Posting Virtuoso

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

Tất cả 5 câu trả lời
I guess the answer is yes.

Hướng dẫn is there a size limit for a list in python? - có giới hạn kích thước cho danh sách trong python không?

15 năm trước

Tại sao không phải là một cái gì đó như:

Nếu Len (Mylist)> 5: ... Del Mylist [0]
...del mylist[0]

Hướng dẫn is there a size limit for a list in python? - có giới hạn kích thước cho danh sách trong python không?

Vegaseat1.735 đồng nghiệp của Đội đạo đức giả của Daniweb 1,735 DaniWeb's Hypocrite Team Colleague

15 năm trước

Tại sao không phải là một cái gì đó như:

Nếu Len (Mylist)> 5: ... Del Mylist [0]
...del mylist[0]

Vegaseat1.735 đồng nghiệp của Đội đạo đức giả của Daniweb

Ý tưởng tốt, nhưng nếu Mylist được thêm vào ở một số nơi khác nhau trong mã của bạn so với nó sẽ không thực tế.

Trả lời chủ đề này

Là một phần của cộng đồng Daniweb

Kích thước tối đa của danh sách là gì?

Độ dài tối đa của danh sách phụ thuộc vào nền tảng và phụ thuộc vào không gian địa chỉ và/hoặc RAM.Hằng số tối đa được xác định trong mô-đun SYS trả về 263-1 trên hệ thống 64 bit.263-1 on 64 bit system.

Kích thước của danh sách Python là gì?

Python đã có phương thức xây dựng-Len () để tìm kích thước của danh sách, tức là độ dài của danh sách.Phương thức Len () chấp nhận một sự khác biệt như một đối số và nó được tính và trả về số lượng các phần tử có trong danh sách.len() to find the size of the list i.e. the length of the list. The len() method accepts an iterable as an argument and it counts and returns the number of elements present in the list.

Có bao nhiêu mặt hàng có thể nằm trong danh sách Python?

Trong Python, danh sách là các thùng chứa quan trọng vì chúng lưu trữ tất cả các loại dữ liệu dưới dạng bộ sưu tập.Nó có thể chứa tới 536.870.912 mục trong hệ thống 32 bit.up to 536,870,912 items in a 32-bit system.

Đâu là mức tối đa của danh sách Python?

Hàm Max () - Tìm phần tử lớn nhất của danh sách.Trong Python, có một hàm tích hợp tối đa () bạn có thể sử dụng để tìm số lớn nhất trong danh sách.Để sử dụng nó, hãy gọi Max () trên danh sách các số.Sau đó, nó trả về số lớn nhất trong danh sách đó.call the max() on a list of numbers. It then returns the greatest number in that list.