有如下列表a,需要实现统计列表中对应位置的前面连续重复次数(比如当前位置的数字为1,如果前面没有出现过当前数字,则次数为0,否则当前数字在前面出现过几次统计几次),然后组成一个新的列表b:
a = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]
b = [0, 1, 2, 0, 1, 2, 0, 1, 0, 0, 1, 2, 3, 4, 5]
实现过程
方法一:定义变量flag为标志进行处理,如果当前数字出现过则加1,否则为0
list1=[1,1,1,0,0,0,1,1,0,1,1,1,1,1,1]
result=[0]
flag=0
for i in range(1,len(list1)):
if list1[i]==list1[i-1]:
flag+=1
else:
flag=0
result.append(flag)
print(result)
方法二:逻辑跟方法一差不多,换汤不换药
list1 = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]result = [0] * len(list1)result[0] = 0for i in range(1, len(list1)): if list1[i] != list1[i-1]: result[i] = 0 else: result[i] = result[i-1] + 1print(result)
方法三:这个方法就是判断当前的数据和之前的pre_num数据是否相同,不相同就将num赋值给pre_num,以此类推。
list1 = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]result = [0] * len(list1) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]pre_num = 0for num in range(len(list1)): # print("list1[num]:", list1[num]) # print("list1[pre_num]: ", list1[pre_num]) print(num, pre_num) if list1[num] != list1[pre_num]: pre_num = num result[num] = num - pre_num print(result)print(result)