Python 与MATLAB';s冒号运算符

Python 与MATLAB';s冒号运算符,python,matlab,vector,Python,Matlab,Vector,在MATLAB中,我可以使用:,冒号,运算符创建单调间隔的向量,如下例所示。如何在Python中以类似的简洁方式实现这一点 >> x=1:10 x = 1 2 3 4 5 6 7 8 9 10 或 有射程 range([start], stop[, step]) []显示可选参数。默认范围从零开始。@karakfa是正确的,因为这是创建简单列表的方法 Matlab的向量和矩阵提供了向量化计算,如果这是

在MATLAB中,我可以使用
,冒号,运算符创建单调间隔的向量,如下例所示。如何在Python中以类似的简洁方式实现这一点

>> x=1:10
x =
     1     2     3     4     5     6     7     8     9    10

有射程

range([start], stop[, step])

[]
显示可选参数。默认范围从零开始。

@karakfa是正确的,因为这是创建简单列表的方法

Matlab的向量和矩阵提供了向量化计算,如果这是您需要的,您可能应该使用
numpy.array

>>> import numpy
>>> numpy.arange(1, 11)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
你应该使用

list(range(0,11,2))

因为
range
是一个不可变的iterable对象。

使用
range
。不过,请注意三输入版本中的参数顺序。请注意,Python的
范围
,不同于Matlab的
,不包括上限。此外,根据您以后要执行的操作,您可能需要将结果转换为
列表
。请看一个例子,谢谢路易斯。是的,list(range)产生了我想要的结果,不过对于浮点运算,我似乎需要转到numpy,它似乎产生了更像MATLAB的行为。你的链接非常有用,我已经用numpy更新了你的例子。省略上限有什么目的吗?是的,Numpy更像Matlab。至于为什么省略上限,这就是Python的定义。我曾经读过一些动机(但我并不完全相信):-)注意,虽然Matlab从1开始索引,Python(以及几乎所有其他编程语言)从0开始索引。@MartinSandChristensen面向数学的语言通常从1开始索引:除了Matlab,还有一些是:Scilab(索引类似于Matlab)、Fortran(默认情况下基于1),Wolfram(索引≤0具有特殊含义),Maple(数学索引始终基于1,默认情况下程序员索引)。这应该取决于他的使用案例。可能。无论如何,我更喜欢使用numpy的解决方案,如果OP想将Matlab/Octave代码转换为python,这会更有意义。感谢Martin,这种方法似乎最适合我,因为它允许浮点数和整数。由于输出不包括上限,这似乎需要更多的系统开销编码器部分不是吗?我真的需要3行代码来复制MATLAB的简单运算符。我听说Python应该生成比MATLAB更简单的代码,但我还没有看到它。
import numpy
dx=2.5
print(numpy.arange(0,10+dx,dx))
我最初的想法与您相同,但对于零索引语言,它实际上在大多数情况下都能满足您的要求。如果您想要10个整数的范围,则可以得到10个整数。不过,老实说,我几乎从未使用过范围函数。在数学应用的特定领域中,我认为您可能有一个关于o的观点ne索引,但这取决于您的用例。
list(range(0,11,2))