【问题标题】:How to restrict the number of elements in python lists如何限制python列表中的元素数量
【发布时间】:2018-09-29 05:33:06
【问题描述】:

我来自C 世界,缓冲区的大小可以提前控制。例如,声明一个包含 10 个元素的双精度缓冲区,我们这样做:

double *buffer = calloc(10, sizeof(double));

在 Python 中,情况恰恰相反,我们不需要通过说buffer=[] 来担心缓冲区的细节和大小。

我的问题是:如果我想限制 python 列表保存任意数量的值,比如 10 个双精度值,我们如何使用默认的 python 列表或numpy 来做到这一点?

【问题讨论】:

  • 我不认为这是一个精确的重复,因为用户对numpy开放。
  • 我看不出这是链接问题的副本。初始化长度和实际限制长度不是一回事。
  • @jpp 我在欺骗列表中添加了另一个,甚至具有相同的 C 前言。
  • @PaulPanzer 你在列表中看到第二个重复项了吗?

标签: python arrays python-3.x numpy


【解决方案1】:

为确保数组具有固定大小和特定类型,您应该使用numpy。即使是非数字数据也是如此。

下面是一些例子。

import numpy as np

arr = np.zeros(10, dtype=float)
# array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]), dtype = float64

arr = np.zeros(10, dtype=int)
# array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), dtype = int32

arr = np.empty(10, dtype='<U8')
# array(['', '', '', '', '', '', '', '', '', ''],
#       dtype='<U8')

【讨论】:

    【解决方案2】:

    您可以使用具有 maxlen 属性的集合中的deque

    from collections import deque
    d = deque(maxlen=2)
    

    然后,您可以对受限列表进行附加、弹出、迭代或做任何您想做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2015-01-18
      • 1970-01-01
      • 2022-12-11
      • 2020-09-28
      • 2013-04-08
      相关资源
      最近更新 更多