在python中分离数组中不同值的更好方法

时间:2014-09-05 10:36:57

标签: arrays python-2.7

我正在使用python 2.7来绘制串口数据

串行数据的格式如下(X型和Y型)

27Y 27Y 12X 0X 25Y 26Y 153X 214X 29Y 28Y 29Y 28Y 139X 154X 249X 196X 0X 2X 27Y 27Y 25Y 25Y 26Y 26Y 175X 242X 26Y 27Y

我使用以下代码将数据分开并存储在两个不同的数组中:

 # Read from serial port, blocking
 data =ser.read(1)
 data1=(data)


 # If there is more than 1 byte, read the rest
 n = ser.inWaiting()
 data1 = (data1 + ser.read(n))
 l = data1.split( )

 x = [d.strip("X") for d in l if d[len(d)-1] != "Y"]
 y = [d.strip("Y") for d in l if d[len(d)-1] != "X"]



 for i in range(0,len(x)-1):
    del a2[i]


 for i in range(0,len(x)-1):
    del a4[i]


 a2.extend(x)


 a4.extend(x)

以上代码只是分隔值

所需的完整代码的一部分

是否有更好,更快的方法来分隔X类型和Y类型的值并存储在不同的数组中。

由于

1 个答案:

答案 0 :(得分:0)

这里列表推导的缺点是你迭代l两次,而你可以做一次:

x = []
y = []
for d in l:
    if d.endswith("X"):
        x.append(d[:-1])
    else:
        y.append(d[:-1])

显式切片可能比strip略快,因为它不需要检查字符串的第一个或倒数第二个字符。然后你可以这样做。

a2 = a2[len(x):] + x

而不是一次删除一个项目。