为什么我的长度只有我想要的一半?

2024-04-26 17:36:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望模式的长度与数据段的长度相匹配,这哪里出错了?你知道吗

data_segment = [] #an empty list

data_series = [-1, 2, -2, 3, 41, 38, 22, 10, -1, 3]
pattern = [40, 30, 20, 10]


out_list = [] #an empty list to contain the final output

length = len(pattern) #length of pattern list


for i, v in enumerate(data_series):
        if i + length > len(data_series) + 2: 
            break

        data_segment.append([v, data_series[i+1]])
print(data_segment)

哪个指纹

[[-1, 2], [2, -2], [-2, 3], [3, 41], [41, 38], [38, 22], [22, 10], [10, -1], [-1, 3]]

但我需要打印出来

[[-1, 2, -2, 3], [2, -2, 3, 41], [-2, 3, 41, 38], [3, 41, 38, 22], [41, 38, 22, 10], [38, 22, 10, -1], [22, 10, -1, 3]]

Tags: theto数据andatalen模式segment
1条回答
网友
1楼 · 发布于 2024-04-26 17:36:11

你的代码

data_segment.append([v, data_series[i+1]])

正在创建两元素列表的列表。不是你想要的输出。你知道吗

您需要生成一个模式长度的重叠切片列表,并进行一些截断,以便仅在一行中使用列表理解而不是循环生成模式长度的子列表:

data_segment = [data_series[i:i+len(pattern)] for i in range((len(data_series)//4)*4 - 1)]

印刷品:

[[-1, 2, -2, 3], [2, -2, 3, 41], [-2, 3, 41, 38], [3, 41, 38, 22], [41, 38, 22, 10], [38, 22, 10, -1], [22, 10, -1, 3]]

相关问题 更多 >