有沒有簡單的方法使用enumerate
而不是for
循環與?例如,在這裏,我循環將其子數組的索引替換爲子數組中每個元素的所有值。如何使用枚舉替換循環範圍(len)
list = []
for i in range(len(nparray)):
j = [i]*(len(nparray[i]))
list.append(j)
我nparray是np.array
與6級的子陣列,每個子陣列具有不同的大小。
有沒有簡單的方法使用enumerate
而不是for
循環與?例如,在這裏,我循環將其子數組的索引替換爲子數組中每個元素的所有值。如何使用枚舉替換循環範圍(len)
list = []
for i in range(len(nparray)):
j = [i]*(len(nparray[i]))
list.append(j)
我nparray是np.array
與6級的子陣列,每個子陣列具有不同的大小。
enumerate
將不會取代使用for
,只是說它更好。您可以使用,但是列表理解: [[i]*len(x) for i,x in enumerate(nparray)]
,並避免使用list
變量名,因爲它alrteady用作內置。
要使用枚舉器,首先需要聲明兩個目標變量,因爲枚舉器返回一個元組。使用
在理解列表您的例子,它可能是這樣的:
listR = [[idx]*(len(val)) for idx,val in enumerate(multiarray)]
如果你想深https://docs.python.org/2/library/functions.html#enumerate
我希望這可以幫助您。
Regards
所以這裏我是從零開始的連續數字,x是nparray?爲什麼它知道我是從零開始的連續數字?感謝有關列表的評論。 – Jan
這就是'枚舉'是如何工作和定義的:它遍歷所有元素(在這裏命名爲'x'),同時還提供它們的索引(在這裏命名爲'i')。 ('x'不是'nparray',而是跨越其元素。) – Julien