【问题标题】:How to make an tuple that contains elements 1,2,3,...100?如何制作包含元素 1,2,3,...100 的元组?
【发布时间】:2018-04-23 14:03:05
【问题描述】:

对不起,我知道这是一个非常简单的问题,我想做一个包含 1,2,3,4,...,100 的元组。我应该先制作 numpy 数组,然后将 numpy 转换为元组吗?如果是的话,我怎样才能先做一个像numpy这样的东西?

【问题讨论】:

  • print(tuple(range(1, 101))) ?
  • 为什么你想创建一个包含这些数字的元组?无论您想要实现什么,都有可能有更好的解决方案。
  • @SvenMarnach 它被用于神经网络的网格搜索交叉验证,我希望它为第一层的神经元数量尝试值 1,...,100。跨度>
  • 一个用例是如果你想要一个dict 键,因为你不能使用列表。
  • @Sus20200 您很可能会传入range(1, 101),而不是包含这些值的元组。

标签: python python-3.x numpy tuples


【解决方案1】:

你可以这样做:

x = tuple(range(1, 101))

或者,使用 NumPy:

x = tuple(np.arange(1, 101))

【讨论】:

  • 谢谢,我们怎样才能让它们增加像 2 这样的任意数字? 1,3,5,7,...
  • 你只需要添加第三个参数:而不是range(1, 101)你写range(1, 101, 2),你可以用你想要的步长替换2
【解决方案2】:

最简单的方法是创建一个range() 并将其变成一个元组:

tuple(range(1, 101))

不过,一般来说,您甚至不需要将其转换为元组 - 您可以直接使用 range 对象。

【讨论】:

  • 谢谢,我们怎样才能让它们增加像 2 这样的任意数字? 1,3,5,7,...
  • @Sus20200:你可以在一个序列中描述的任何东西都可以变成一个元组。所以1,3,5,7... 将是tuple(range(1,[ending value +1,2))tuple(map(int,'1357')) 等。
【解决方案3】:

您应该为此使用 numpy。作为一般规则,numpy 和 python 序列之间的转换非常慢:

>>> from timeit import timeit
>>> import numpy as np
>>> kwds = dict(globals=globals(), number=1000000)
>>> 
>>> timeit("tuple(np.arange(1,101))", **kwds)
4.895919734146446
>>> timeit("tuple(range(1,101))", **kwds)
1.0187234980985522
>>> timeit("*range(1,101),", **kwds)
1.3246291619725525

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2015-04-07
    • 2013-11-20
    • 1970-01-01
    相关资源
    最近更新 更多