【发布时间】:2018-04-20 13:45:28
【问题描述】:
我有一个列表/数组(可以把它们做成数组,没关系):
array = [1,2,1,1,2,3,1,2,1,2,3,1,2,3,4,5]
我想创建一个new_array FROM array,如下所示:
new_array = [[1,2],[1],[1,2,3],[1,2],[1,2,3],[1,2,3,4,5]]
我想出的逻辑是从a=0,b=1开始循环遍历array,当array[a] < array[b]的值,然后a+=1,b+=1,但是如果array[a]>=array[b]的值,那么附加b 的值:
这是我尝试过的:
index_1 = [] # This will be the list which will have the FIRST index
index_2 = [] # This will be the list which will have the SECOND index
a = 0
b = 1
for i in array:
if i[a] < i[b]:
a = a+1
b = b+1
elif i[a] >= i[b]:
index_2.append(b)
index_1.append(a)
所以index_1 将有第一个索引,index_2 将有第二个索引,然后,我们可以通过以下方式创建new_array:
new_array = [(array[start:end]) for start,end in zip(index_1,index_2)]
不幸的是,即使我的想法是正确的,由于IndexError: invalid index to scalar variable.,循环在if i[a]<i[b] 中停止。
【问题讨论】:
-
那些不是数组。
-
@juanpa.arrivillaga:没关系,我可以让他们
numpy arrays或者让他们成为lists。 -
你可以试试
print(i),你得到了什么?所以实际上,你需要的是for _ in range(len(array))、array[a]和array[b]。i已经是array中的一个项目。 -
当然很重要。不仅性能特征不同,
numpy中也不能有交错数组,正如new_array所暗示的那样 -
@Sraw: 所以你的意思是我必须修改我的
for循环?如果有怎么办?其他一切都正确吗?
标签: python arrays for-loop append