Python的3转范围列表(Python 3 turn range to a list)

2019-06-17 10:48发布

我试图与数字列表1-1000在里面。 显然,这将是恼人的读/写,所以我试图做一个清单,在它的范围。 在Python 2似乎是:

some_list = range(1,1000)

会工作,但在Python 3的范围是类似xrange Python 2里的?

任何人都可以提供一些洞察到这一点?

Answer 1:

你可以只从建设的范围对象的列表:

my_list = list(range(1, 1001))

这是你如何在python2.x发电机做得一样好。 通常来说,你也许并不需要一个列表,虽然,因为你可以通过值来my_list[i]更有效的( i + 1 ),如果你只需要遍历它,你可以依傍range

还要注意的是在python2.x, xrange仍然是可转位1。 这意味着, range上python3.x也具有相同的属性2

1个 print xrange(30)[12]适用于python2.x

2类似的语句来1 python3.x是print(range(30)[12])和作品也。



Answer 2:

在Python 3.X的range()函数有它自己的类型。 所以在这种情况下,你必须使用迭代器

list(range(1000))



Answer 3:

在蟒<= 3.4就可以了,正如其他建议的,使用list(range(10))以使列表出来的范围内(通常,任何可迭代)。

另一种选择,在Python引入3.5以其拆包概括,是通过使用*在列表字面[]

>>> r = range(10)
>>> l = [*r]
>>> print(l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

虽然这是相当于list(r)它的字面语法和没有功能调用参与并让它执行得更快的事实。 这也是更少的字符,如果你需要编写高尔夫:-)



Answer 4:

你真的不应该需要在列表中使用数字1-1000。 但是,如果由于某种原因,你真的需要这些数字,那么你可以这样做:

[i for i in range(1, 1001)]

列表理解一言以蔽之:

上面的列表理解翻译为:

nums = []
for i in range(1, 1001):
    nums.append(i)

这仅仅是一个列表理解语法,虽然从2.x的 我知道,这将在Python 3工作,但我不知道是否有升级的语法以及

范围开始包容性的第一个参数; 但结束为止, 不包括第二个参数(当提供2个参数;如果所述第一参数离开,它会在“0”开始)

range(start, end+1)
[start, start+1, .., end]


Answer 5:

为什么Python3缺乏功能直接得到一个介于名单的原因是因为原来的Python3设计师在Python2相当新手。 他认为只有在for循环中,因此,其列表不应该需要扩大使用范围()函数。 其实,很多时候我们需要使用范围()函数产生一个列表,并传递到一个函数。

因此,在这种情况下,相比于Python2因为Python3是不太方便:

  • 在Python2,我们的xrange()和量程();
  • 在Python3,我们有范围()和清单(范围())

尽管如此,你仍然可以使用列表扩展这种方式:

[*range(N)]


Answer 6:

其实,如果你想1-1000(含),使用range(...)用参数1和1001功能: range(1, 1001)因为range(start, end)函数从开始进入到(最终1),包括端值。



Answer 7:

事实上,这是相比于Python2 Python3的复古渐变。 当然,Python2其使用范围()和x范围()比Python3更方便,它们分别(范围())和范围()使用列表。 究其原因是因为Python3的原始设计者是不是很有经验,他们只考虑了使用的很多初学者的范围函数来遍历了大量的地方既是内存和CPU效率低下的元素; 但他们忽略了使用范围功能产生号码列表。 现在,它是为时已晚,他们改变回来了。

如果我是Python3的设计师,我将:

  1. 使用irange返回一个序列的迭代器
  2. 使用lrange返回序列表
  3. 使用范围内返回一个序列迭代器(如果元件的数目是大的,例如,范围(9999999)或序列列表(如果元件的数目是小的,例如,范围(10))

这应该是最佳的。



Answer 8:

使用范围在Python 3。

下面是一个例子功能,从两个数字之间的数字返回

def get_between_numbers(a, b):
    """
    This function will return in between numbers from two numbers.
    :param a:
    :param b:
    :return:
    """
    x = []
    if b < a:
        x.extend(range(b, a))
        x.append(a)
    else:
        x.extend(range(a, b))
        x.append(b)

    return x

结果

print(get_between_numbers(5, 9))
print(get_between_numbers(9, 5))

[5, 6, 7, 8, 9]  
[5, 6, 7, 8, 9]


文章来源: Python 3 turn range to a list