我试图遍历具有相似名称的数组,例如:
a0=[]
a1=[]
a2=[]
a3=[]
a4=[]
for k in range(len(mlac)): # mlac.shape (17280, 5)
for I in range(len(mlac[0])):
'a%i'%I.append(mlac[k][I])
# or : 'a{}'.format(I).append(mlac[k][I])
但是两者都被认为是循环中的字符串,不能追加。
因此对于“I”的每次迭代,我们取“mlac”的相应列并添加到相应迭代的数组“a”中。
尝试获取一个字符串并将其直接用作变量名并不是一个好主意。
如果允许更改这些数组,则应将它们更改为列表列表或字典。如果没有,您可以将这些现有数组加载到另一个数据结构中,在那里您可以轻松地迭代它们。
a0=[]
a1=[]
a2=[]
a3=[]
a4=[]
list_of_lists = [a0, a1, a2, a3, a4]
for k in range(len(mlac)): # mlac.shape (17280, 5)
for I in range(len(mlac[0])):
list_of_lists[I].append(mlac[k][I])
数组通过引用传递,因此您的原始数组将根据需要修改其内容。
Sembei 轻松修复:
A = [[],[],[],[],[]]
for k in range(len(mlac)):
for i in range(len(mlac[0])):
A[i].append(mlac[k][i])
使用
eval()
功能是否适用于您的用例?
这是一个简单的代码片段,演示了如何使用它:
a0=[]
a1=[]
a2=[]
a3=[]
a4=[]
a5=[]
mlac = [[y for y in range(5)] for x in range(5)] # Mock version of your mlac multidimentional array
for k in range(len(mlac)):
for I in range(len(mlac[0])):
eval(f"a{I}.append(mlac[k][I])")
print(a0)
print(a1)
print(a2)
print(a3)
print(a4)
'''
Output:
[0, 0, 0, 0, 0]
[1, 1, 1, 1, 1]
[2, 2, 2, 2, 2]
[3, 3, 3, 3, 3]
[4, 4, 4, 4, 4]
'''
有关如何使用
eval()
函数的更多示例可在此处找到:Python eval():动态评估表达式