在Python中将一系列数字转换为数组

时间:2016-04-02 18:53:42

标签: python arrays

我想在不使用任何库的情况下将一系列数字转换为Python中的数组。 (0,2 3,0 4,5 7,8 8,6 9,5 13,6 15,9 17,10 21,8) (1,3 3,4 5,9 7,5 10,2 11,4 20,10) (0,0 6,6 12,3 19,6(绿色)) 例如这三个系列。 没有像numpy这样的库可以做到吗? 我尝试使用numpy但是在第一个系列中达到了这样的解决方案。

array([[ 0,  2],
       [ 3,  0],
       [ 4,  5],
       [ 7,  8],
       [ 8,  6],
       [ 9,  5],
       [13,  6],
       [15,  9],
       [17, 10],
       [21,  8]])

但教授不接受这一点。

2 个答案:

答案 0 :(得分:1)

如果

a = "1,2 2,3 3,4 ..."

然后

result = [map(int, v.split(",")) for v in a.split()]

会给你

print result
[[1, 2], [2, 3], [3, 4], ... ]

答案 1 :(得分:0)

如果一系列数字是字符串行,那么您可以尝试下一个代码:

a = "0,2 3,0 4,5 7,8 8,6 9,5 13,6 15,9 17,10 21,8"

lines = a.split(' ')
arr = [[int(i) for i in x.split(',')] for x in lines]
print arr

输出

[[0, 2], [3, 0], [4, 5], [7, 8], [8, 6], [9, 5], [13, 6], [15, 9], [17, 10], [21, 8]]

编辑(避免O(n ^ 2))

单程通过:

a = "0,2 3,0 4,5 7,8 8,6 9,5 13,6 15,9 17,10 21,8"    
position = 0
previous_position = 0
final_array = []
temp_array = []
for character in a:
    if character == ',':
        temp_array = []
        temp_array.append(int(a[previous_position:position]))
        previous_position = position
    elif character == ' ':
        temp_array.append(int(a[previous_position+1:position]))
        previous_position = position+1
        final_array.append(temp_array)
    elif position == len(a) - 1:
        temp_array.append(int(a[previous_position+1:]))
        final_array.append(temp_array)

    position += 1

print final_array