给定一个数据列表,我正在尝试创建一个新列表,其中位置的值i
是从i
原始列表中的位置开始的最长运行的长度.例如,给定
x_list = [1, 1, 2, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)
应该返回:
run_list = [2, 1, 1, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
我的解决方案
freq_list = []
current = x_list[0]
count = 0
for num in x_list:
if num == current:
count += 1
else:
freq_list.append((current,count))
current = num
count = 1
freq_list.append((current,count))
run_list = []
for i in freq_list:
z = i[1]
while z > 0:
run_list.append(z)
z -= 1
Run Code Online (Sandbox Code Playgroud)
首先,我创建一个freq_list
元组列表,其中每个元组的第一个元素是元素x_list
,其中第二个元素是总运行的数量.
在这种情况下:
freq_list = [(1, 2), …
Run Code Online (Sandbox Code Playgroud)