我知道我可以迭代一个数组并将每个索引的值附加到我的4个数组变量中,但是有更快,更少编码的方法吗?我很想知道我是否可以做这样的事情(显然不起作用):
tupleOfArrays = ([['s1',2,3],
['s2',3,4],
['s5',6,7]])
arr1, arr2, arr3 = [(a[0],a[1],a[2]) for a in tupleOfArrays]
在这结束时,三个数组应该包含:
arr1=['s1',2,5]
arr2=['s2',3,6]
arr3=['s3',4,7]
已编辑:我已对此进行了编辑,以反映我的结构'真正的'看起来这样选择的答案更有意义。我有一个包含列表列表的元组。内部列表的第一个元素是字符串。
非常感谢
答案 0 :(得分:3)
首先,尝试使用Python命名法 - 你拥有的是列表元组。此外,Python中的名称(类名除外)通常为lowercase_with_underscores
。
要回答您的实际问题,请使用zip
组合多个集合中相同索引的项目:
lst1, lst2, lst3 = map(list, zip(*tuple_of_lists))
zip
默认生成元组,因此我使用map
将它们转换为列表。
答案 1 :(得分:1)
如果你愿意使用numpy,
import numpy as np
tupleOfArrays = ([1,2,3],
[2,3,4],
[5,6,7])
toa = np.array(tupleOfArrays)
arr1 = toa[:,0]
arr2 = toa[:,1]
arr3 = toa[:,2]
答案 2 :(得分:1)
如果你使用numpy
,你可以使用转置方法来获得你想要的东西:
import numpy as np
tupleOfArrays = ([1,2,3],
[2,3,4],
[5,6,7])
numpyList=np.array(tupleOfArrays)
arr1,arr2,arr3 = numpyList.transpose()
另外,要回答关于将值从字符串更改为int的注释,可以使用numpy
方法astype
:
import numpy as np
tupleOfArrays = (["1","2","3"],
["2","3","4"],
["5","6","7"])
numpyList=np.array(tupleOfArrays)
transposed = numpyList.transpose()
arr1,arr2,arr3 = transposed.astype(np.int)