Python -如何获取列表的最后一个元素(不提供逗号)



我正在研究一个传感器数据项目。我首先将传感器数据写入csv文件以保存它。之后,我读取文件并接收传感器数据作为如下列表:

[  0   1   1   0   0 516]
[  1   1   1   0   0 498]
[  2   1   1   0   0 499]
[  3   1   1   0   0 500]
[  4   1   1   0   0 487]
[  5   1   1   0   0 502]
...

元素之间没有逗号。我需要这个列表的最后一个元素来传输单位(模拟数据)。我测试了一些东西,例如创建一个数组并将其转换回列表等等…

这是我保存数据的方式(使用树莓派):

device.start(samplingRate, acqChannelsEDA)
with open('/home/pi/pywork/EDAdata.csv', 'w') as edafile:
# create csv writer
writer = csv.writer(edafile)
start = time.time()
end = time.time()
while (end - start) < running_time:
# Read samples
sampledata = device.read(nSamples)

writer.writerow(sampledata)
print(sampledata)
# print(eda_tf)
end = time.time()
edafile.close()

print(sampledata)的输出为:

[[8 1 1 0 0 0]]
[[9 1 1 0 0 0]]
[[10  1  1  0  0  0]]
[[11  1  1  0  0  0]]
[[12  1  1  0  0  0]]
[[13  1  1  0  0  0]]
[[14  1  1  0  0  0]]
[[15  1  1  0  0  0]]

这是read(self, nSamples=100)的代码。获得sampledata的方法。

dataAcquired = numpy.zeros((nSamples, 5 + nChannels), dtype=int)
for sample in range(nSamples):
Data = self.receive(number_bytes)
decodedData = list(struct.unpack(number_bytes * "B ", Data))
crc = decodedData[-1] & 0x0F
decodedData[-1] = decodedData[-1] & 0xF0
x = 0
for i in range(number_bytes):
for bit in range(7, -1, -1):
x = x << 1
if (x & 0x10):
x = x ^ 0x03
x = x ^ ((decodedData[i] >> bit) & 0x01)
if (crc == x & 0x0F):
dataAcquired[sample, 0] = decodedData[-1] >> 4
dataAcquired[sample, 1] = decodedData[-2] >> 7 & 0x01
dataAcquired[sample, 2] = decodedData[-2] >> 6 & 0x01
dataAcquired[sample, 3] = decodedData[-2] >> 5 & 0x01
dataAcquired[sample, 4] = decodedData[-2] >> 4 & 0x01
if nChannels > 0:
dataAcquired[sample, 5] = ((decodedData[-2] & 0x0F) << 6) | (decodedData[-3] >> 2)
if nChannels > 1:
dataAcquired[sample, 6] = ((decodedData[-3] & 0x03) << 8) | decodedData[-4]
if nChannels > 2:
dataAcquired[sample, 7] = (decodedData[-5] << 2) | (decodedData[-6] >> 6)
if nChannels > 3:
dataAcquired[sample, 8] = ((decodedData[-6] & 0x3F) << 4) | (decodedData[-7] >> 4)
if nChannels > 4:
dataAcquired[sample, 9] = ((decodedData[-7] & 0x0F) << 2) | (decodedData[-8] >> 6)
if nChannels > 5:
dataAcquired[sample, 10] = decodedData[-8] & 0x3F
else:
raise Exception(ExceptionCode.CONTACTING_DEVICE)

return dataAcquired

要获取列表的最后一个元素,应该使用负索引,例如

arr = [10, 20, 30, 40, 50]
print (arr[-1])
print (arr[-2])

输出:

50
40

相关内容