相关疑难解决方法(0)

range()真的创建列表吗?

我的教授和这个人声称range创建了一系列价值观.

"注意:范围函数只返回一个包含从x到y-1的数字的列表.例如,范围(5,10)返回列表[5,6,7,8,9]."

我认为这是不准确的,因为:

type(range(5, 10))
<class 'range'>
Run Code Online (Sandbox Code Playgroud)

此外,访问创建的整数的唯一明显方法range是迭代它们,这使我相信标记range为列表是不正确的.

python range

46
推荐指数
2
解决办法
1万
查看次数

在Python中进行懒惰评估

什么是Python中的懒惰评估?

一个网站说:

在Python 3.x中,range()函数返回一个特殊的范围对象,它根据需要计算列表的元素(延迟或延迟评估):

>>> r = range(10)
>>> print(r)
range(0, 10)
>>> print(r[3])
3
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

python lazy-evaluation python-3.x

43
推荐指数
3
解决办法
4万
查看次数

向Python 2"回归"Python 3的"范围"是一个坏主意吗?

我的一个课程要求在Python中完成作业,作为练习,我一直在确保我的程序在Python 2和Python 3中都能正常工作,使用如下脚本:

#!/bin/bash
# Run some PyUnit tests
python2 test.py
python3 test.py
Run Code Online (Sandbox Code Playgroud)

我一直在做的一件事是range使用这段代码在两个版本中使工作相同:

import sys

# Backport Python 3's range to Python 2 so that this program will run
# identically in both versions.
if sys.version_info < (3, 0):
    range = xrange
Run Code Online (Sandbox Code Playgroud)

这是一个坏主意吗?

编辑:

这样做的原因是,xrangerange工作方式不同在Python 2和Python 3,我希望我的代码做同样的事情在这两个.我可以反过来做,但让Python 3像Python 2一样工作似乎很愚蠢,因为Python 3是"未来".

这是一个为什么只是使用range不够好的例子:

for i in range(1000000000):
    do_something_with(i)
Run Code Online (Sandbox Code Playgroud)

我显然没有使用该列表,但在Python 2中,这将使用疯狂的内存量.

python python-2.x python-3.x

11
推荐指数
2
解决办法
929
查看次数

标签 统计

python ×3

python-3.x ×2

lazy-evaluation ×1

python-2.x ×1

range ×1