Hướng dẫn is there a limit to the length of a list in python? - có giới hạn về độ dài của danh sách trong python không?

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

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

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ước

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 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ước

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ị!
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ư:

Có giới hạn kích thước cho một danh sách trong Python không?

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ử.the maximum size of a list is PY_SSIZE_T_MAX/sizeof[PyObject*] . On a regular 32bit system, this is [4294967295 / 2] / 4 or 536870912. Therefore the maximum size of a python list on a 32 bit system is 536,870,912 elements.

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ố.536,870,912 elements.

Bạn có thể nhận được độ dài của một danh sách?

Có một hàm tích hợp gọi là Len [] để lấy tổng số mục trong danh sách, tuple, mảng, từ điển, v.v.danh sách đã cho. for getting the total number of items in a list, tuple, arrays, dictionary, etc. The len[] method takes an argument where you may provide a list and it returns the length of the given list.

Bài Viết Liên Quan

Chủ Đề