我想在不使用任何库的情况下将一系列数字转换为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]])
但教授不接受这一点。
答案 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