【问题标题】:Creating a List of a Range is slow, are there alternatives? [closed]创建范围列表很慢,有其他选择吗? [关闭]
【发布时间】:2021-09-19 15:09:18
【问题描述】:

所以我必须创建一个大范围的列表,并尝试使用 list(range(number1, number2)) 来完成此操作,而数字 number1number2 可能会有很大差异,例如 235 和 4323246376。现在,这需要处理时间长。这个过程可以加快吗?

【问题讨论】:

  • 我认为您最好提供有关您的用例的更多详细信息
  • 不,这是 Python 中创建此类列表的最快方式。使其更快的唯一方法是避免创建此列表。你需要它做什么?
  • @DaniMesejo @mkrieger1 我想检查一个范围中有多少数字在另一个列表中,为此我使用numpy.intersect1d(listWithRange, OtherList)
  • @lorhof1 那么你们都需要检查 otherList 中的数字大于等于 number1 小于等于 number2。无需创建列表
  • @DaniMesejo 谢谢。计算满足条件的项目的最有效方法是什么?

标签: python list performance range


【解决方案1】:

如果您只想将列表用作过滤器来计算另一个列表中的项目,则根本不应该使用范围。

例如:

count = numpy.sum(theList >= 235) - numpy.sum(theList >= 4323246376)

【讨论】:

    【解决方案2】:

    你打算用这个实现什么用例?

    如果您打算使用此列表一次,请不要将范围对象类型转换为列表。 当您将范围对象类型转换为列表时,它将所有数字存储在列表中,这会花费您的内存。 您可以只遍历范围对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2011-08-05
      • 1970-01-01
      • 2011-03-30
      • 2021-10-31
      • 1970-01-01
      • 2013-11-16
      • 2016-11-19
      相关资源
      最近更新 更多