Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建长度为M的N个数组,其中每个数组上的序列增加1_Python_Arrays - Fatal编程技术网

Python 创建长度为M的N个数组,其中每个数组上的序列增加1

Python 创建长度为M的N个数组,其中每个数组上的序列增加1,python,arrays,Python,Arrays,早上好 给定两个数字(a,b),我应该创建一个长度为“b”的不同列表,其中每个列表的顺序增加一 例如: 1,2=>[[0,1]] 2,2=>[[0,1],[1,2]] 我正在尝试编写以下函数: def increase_arrays(arrays, length): result = [[i for i in range(length)] for i in range(arrays)] return result increase_arrays(2,3) => [[0,

早上好

给定两个数字(a,b),我应该创建一个长度为“b”的不同列表,其中每个列表的顺序增加一

例如:

1,2=>
[[0,1]]

2,2=>
[[0,1],[1,2]]

我正在尝试编写以下函数:

def increase_arrays(arrays, length):
    result = [[i for i in range(length)] for i in range(arrays)]
    return result

increase_arrays(2,3)
=> [[0, 1, 2], [0, 1, 2]]
我看不到如何修改代码,因此第二个数组是
[1,2,3]

有人能帮忙解决这个问题吗?

您有著名的重复索引问题,您有两个索引
i

以下是您需要的代码:

def increase_arrays(arrays, length):
    result = [[i + j for i in range(length)] for j in range(arrays)]
    return result

increase\u数组(2,3)
返回
[[0,1,2],[1,2,3]]
您有著名的重复索引问题,您有两个索引
i

以下是您需要的代码:

def increase_arrays(arrays, length):
    result = [[i + j for i in range(length)] for j in range(arrays)]
    return result

increase\u数组(2,3)
返回
[[0,1,2],[1,2,3]]

我终于用以下方法解决了这个问题:

def increase_arrays(arrays, length):
    return [list(range(i,length+i)) for i in range(arrays)]

我终于用以下方法解决了这个问题:

def increase_arrays(arrays, length):
    return [list(range(i,length+i)) for i in range(arrays)]

这里有一个numpy解决方案,只是为了好玩:

np.arange(arrays)[:,np.newaxis] + np.arange(length)[np.newaxis,:]

这里有一个numpy解决方案,只是为了好玩:

np.arange(arrays)[:,np.newaxis] + np.arange(length)[np.newaxis,:]

这是解决方案,但它的可读性比以前的代码低得多。加上取决于您如何使用它,这可能会更慢,因为转换到
列表
在长距离上是非常昂贵的操作。@Dmytro。是否意味着转换已知长度的序列将比转换等效的生成器表达式慢?也就是说,
列表(范围(…))
将比
[x+y代表范围(…)内的x]
慢?“因为我不认为那是对的。”物理学家说,那是我的错。您是对的,
list(range(…)
将比list理解更快。我用不同的python进行了测试,但我仍然认为最初的代码更具可读性。目前,如果我在几个月后看到函数,我不确定是否需要1秒的时间才能弄清楚代码的作用,即使它是一行代码。@Dmytro。我认为好的变量名将大大缓解这种情况。例如,
i
->
offset
这是解决方案,但它的可读性比以前的代码低得多。加上取决于您如何使用它,这可能会更慢,因为转换到
列表
在长距离上是非常昂贵的操作。@Dmytro。是否意味着转换已知长度的序列将比转换等效的生成器表达式慢?也就是说,
列表(范围(…))
将比
[x+y代表范围(…)内的x]
慢?“因为我不认为那是对的。”物理学家说,那是我的错。您是对的,
list(range(…)
将比list理解更快。我用不同的python进行了测试,但我仍然认为最初的代码更具可读性。目前,如果我在几个月后看到函数,我不确定是否需要1秒的时间才能弄清楚代码的作用,即使它是一行代码。@Dmytro。我认为好的变量名将大大缓解这种情况。例如,
i
->
偏移量