Python 在计算运行中出现的次数时创建新列表,不重复

Python 在计算运行中出现的次数时创建新列表,不重复,python,Python,我有一些列表(在python中),其中包含重复的数字,然后是其他数字,然后再次返回,如下所示: [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 3, 3, 3, 1] 我想把它转换成一个新的列表,在这个列表中我避免了数字的重复,比如: ['1*9', '2*2', '1*2', '3*3', '1*1'] 您可以建立一个包含[element,count]的2元素列表,然后在最后将其转换为字符串格式 a = [1, 1, 1, 1, 1, 1, 1, 1, 1

我有一些列表(在python中),其中包含重复的数字,然后是其他数字,然后再次返回,如下所示:

[1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 3, 3, 3, 1]
我想把它转换成一个新的列表,在这个列表中我避免了数字的重复,比如:

['1*9', '2*2', '1*2', '3*3', '1*1'] 

您可以建立一个包含[element,count]的2元素列表,然后在最后将其转换为字符串格式

a = [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 3, 3, 3, 1]

b = []
for i in a:
    if not b or b[-1][0] != i:
        b.append([i, 1])   # a new element - append and start the count at 1
    else:
        b[-1][1] += 1  # a duplicate - increment the count

counts = ['{}*{}'.format(*l) for l in b]

print(counts)
这使得:

['1*9', '2*2', '1*2', '3*3', '1*1']
输出:

['1*9', '2*2', '1*2', '3*3', '1*1']
>>> 
['1*9', '2*2', '1*2', '3*3', '1*1']
您可以这样做:

         ll=[1,1,1,1,1,1,1,1,2,2,3,3,3]
         b=[]
         for i in ll:
            x=ll.count(i)
            t=str(i)+'*'+str(x)
            b.append(t)
         b=list(set(b))
         print(b)

这将是输出:['1*8'、'3*3'、'2*2']

可以使用以下方法实现所需的结果:


.

OP具有样本输入和所需输出。您的代码不使用示例输入,但修改后不会生成输出。从OP的示例输出中,我认为需要按列表顺序重复字符的运行长度。您能否具体说明输出的规则。数字应该按列表顺序排列吗?你是否只计算一次运行长度内的重复数?是的,数字应按列表顺序排列,我有随时间变化的温度变化列表,每个列表代表一些数字来来去去的每日温度变化,通常我使用可视化来查看波动,但我想创建一个列表,所以我将它添加到数据框中,并直观地检查数据的移动。我投票结束这个问题,因为它需要更多的关注点,因为它可以很容易地分为两个独立的问题:如何计算连续的重复项,以及如何将结果值合并到字符串中。这两个问题以前都已经回答过了。例如,请参阅和。这仅适用于3个以前已知的数字。当第二次显示的数字获得新条目时,它也不会产生所需的输出。
         ll=[1,1,1,1,1,1,1,1,2,2,3,3,3]
         b=[]
         for i in ll:
            x=ll.count(i)
            t=str(i)+'*'+str(x)
            b.append(t)
         b=list(set(b))
         print(b)
def gen(ll):
    v, q = None, -1
    for x in ll:
        if q < 0 or v != x:
            if q > 0:
                yield v, q
            v, q = x, 0
        q += 1
    yield v, q

ll = [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 3, 3, 3, 1]

print([f'{v}*{q}' for v, q in gen(ll)])
['1*9', '2*2', '1*2', '3*3', '1*1']