显然xrange更快但我不知道为什么它更快(除了轶事到目前为止没有证据表明它更快)或者除此之外还有什么不同
for i in range(0, 20):
for i in xrange(0, 20):
Run Code Online (Sandbox Code Playgroud) 我想创建一个可以容纳10个元素的空列表(或者是最好的方法).
之后我想在该列表中分配值,例如,这应该显示0到9:
s1 = list();
for i in range(0,9):
s1[i] = i
print s1
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,它会生成错误,或者在另一种情况下,它只显示[](空).
有人可以解释原因吗?
我正在使用2.3 IDLE而且我遇到了问题.
我需要检查一个数字是否介于两个其他数字10000和30000之间:
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
Run Code Online (Sandbox Code Playgroud)
它运作得不好.
我有一个整数值x,我需要检查它是否在a start和end值之间,所以我写下面的语句:
if x >= start and x <= end:
# do stuff
Run Code Online (Sandbox Code Playgroud)
这个陈述有下划线,工具提示告诉我必须
简化链式比较
据我所知,这种比较就像它们来的一样简单.我错过了什么?
在关闭括号之前/,Python 3.4的help输出意味着什么range?
>>> help(range)
Help on class range in module builtins:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Return a virtual sequence of numbers from start to stop by step.
|
| Methods defined here:
|
| __contains__(self, key, /)
| Return key in self.
|
| __eq__(self, value, /)
| Return self==value.
...
Run Code Online (Sandbox Code Playgroud) 我一直想知道懒惰评估为何有用.我还没有任何人以有道理的方式向我解释; 最重要的是它最终沸腾到"相信我".
注意:我不是指记忆.
为什么使用不同值初始化的范围在Python 3中相互比较?
当我在我的解释器中执行以下命令时:
>>> r1 = range(0)
>>> r2 = range(2, 2, 2)
>>> r1 == r2
True
Run Code Online (Sandbox Code Playgroud)
结果是True.为什么会这样?为什么range具有不同参数值的两个不同对象被视为相等?
我看过一个关于 python 中循环速度的视频,其中解释说,这样做sum(range(N))比手动循环并将变量添加在一起要快得多range,因为前者由于使用了内置函数而在 C 中运行,而在后者中求和是在(慢)Python 中完成的。numpy我很好奇添加到混合物中会发生什么。正如我预期的那样np.sum(np.arange(N)),它是最快的,但sum(np.arange(N))比np.sum(range(N))执行简单的 for 循环还要慢。
为什么是这样?
这是我用来测试的脚本,一些关于我所知道的缓慢原因的评论(主要来自视频)以及我在我的机器上得到的结果(python 3.10.0,numpy 1.21.2):
更新的脚本:
import numpy as np
from timeit import timeit
N = 10_000_000
repetition = 10
def sum0(N = N):
s = 0
i = 0
while i < N: # condition is checked in python
s += i
i += 1 # both additions are done in python
return s
def sum1(N = N): …Run Code Online (Sandbox Code Playgroud) 我有一个自定义类,
class A:
def __init__(self, a, b):
self.a = a
self.b = b
Run Code Online (Sandbox Code Playgroud)
该类不可迭代或可索引或类似的东西.如果可能的话,我想保持这种方式.有可能像以下工作一样吗?
>>> x = A(1, 2)
>>> min(x)
1
>>> max(x)
2
Run Code Online (Sandbox Code Playgroud)
让我想到这一点的是,min并max在文档中列为"通用序列操作" .由于range被同一个文档认为是序列类型,我认为必须有某种可能的优化range,也许我可以利用它.
也许有一种我不知道的神奇方法可以实现这一点吗?
我试图检查一个数字是否在整数范围内,并根据它所在的范围返回一个数字。我想知道是否有更好,更有效的方法来做到这一点:
def checkRange(number):
if number in range(0, 5499):
return 5000
elif number in range(5500, 9499):
return 10000
elif number in range(9500, 14499):
return 15000
elif number in range(14500, 19499):
return 20000
elif number in range(19500, 24499):
return 25000
elif number in range(24500, 29499):
return 30000
elif number in range(29500, 34499):
return 35000
elif number in range(34500, 39499):
return 40000
elif number in range(39500, 44499):
return 45000
Run Code Online (Sandbox Code Playgroud)
这感觉像是在浪费资源,如果有更好的方法来做到这一点,我们将不胜感激。
python ×9
python-3.x ×4
range ×3
haskell ×1
identity ×1
if-statement ×1
list ×1
loops ×1
numpy ×1
performance ×1
pycharm ×1
python-2.x ×1
xrange ×1