拆分列表中的每个字符串并存储在多个数组中

时间:2017-12-20 10:55:12

标签: python arrays list split

我有一个如下所示的列表:['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']

我想最终得到这三个数组:[1,2,3,4][0,0.5,1,1.5]以及[0,0.25,0.5,0.75]

即。我想要每个列表项的第一个值并将其存储在一个数组中,并对第二个和第三个值执行相同的操作。

我试过这个

for i in coordinates[:]:
    number,x,y=i.split(' ')

还尝试使用number[]number.append 但这些似乎都不起作用

4 个答案:

答案 0 :(得分:4)

这可以按如下方式完成:

unordered_map<uint32_t, Vertex_Descriptor>

首先,我们遍历列表中的所有字符串并将它们拆分

list(zip(*(list(map(float, s.split())) for s in coordinates)))

然后我们在所有单个字符串上[s.split() for s in coordinates] map函数将它们转换为浮点数:

float

然后我们使用[list(map(float, s.split())) for s in coordinates] 以您希望的方式获取它们。

答案 1 :(得分:1)

类似于@ ikkuh,但有&#34;可配置&#34;类型:

data = ['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']
tp = [int, float, float] 

parsed = ((t(j) for t, j in zip(tp, record.split())) for record in data)
idx, x, y = (list(i) for i in zip(*parsed))
idx
# [1, 2, 3, 4]
x
# [0.0, 0.5, 1.0, 1.5]
y
# [0.0, 0.25, 0.5, 0.75]

答案 2 :(得分:0)

这是一种没有for循环的方法,使用lambda:

a=['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']

print(list(zip(*list((map(lambda y:y.split(),a))))))

输出:

[('1', '2', '3', '4'), ('0', '0.5', '1', '1.5'), ('0', '0.25', '0.5', '0.75')]

答案 3 :(得分:-1)

创建三个新列表,并通过输入:

input = ['1 0 0','2 0.5 0.25','3 1 0.5','4 1.5 0.75']
x_list = []
y_list = []
z_list = []

for i in input:
    x, y, z = i.split(' ')
    x_list.append(x)
    y_list.append(y)
    z_list.append(z)