小编典典

计算字母并显示在列表中

python

我需要从用户那里接收一个字符串,并将其显示在列表中,以便列表中的每个器官都包含[字母,它在一行中重复的数字]。

我以为我的代码不错,但是没用。我使用了http://pythontutor.com,发现一个问题是我的var.next和current始终保持相同的值。

有人有想法吗?

这是我的代码:

    string = raw_input("Enter a string:")
    i=0
    my_list=[]
    current=string[i]
    next=string[i+1]
    counter=1
    j=0
    while i<range(len(string)) and next<=range(len(string)):

        if i==len(string)-1:
            break
        j+=1
        i+=1
        if current==next:
            counter+=1

        else:
            print my_list.append([string[i],counter])
            counter=1

输出:

Enter a string: baaaaab
As list: [['b', 1], ['a', 5], ['b', 1]]

阅读 172

收藏
2021-01-20

共1个答案

小编典典

itertools.groupby()在这里使用:

>>> from itertools import groupby
>>> [[k, len(list(g))] for k, g in groupby("baaaaab")]
[['b', 1], ['a', 5], ['b', 1]]

或不使用库:

strs = raw_input("Enter a string:")
lis = []
for x in strs:
   if len(lis) != 0:
      if lis[-1][0] == x:
         lis[-1][1] += 1
      else:
         lis.append([x, 1])
   else:
       lis.append([x, 1])         
print lis

输出:

Enter a string:aaabbbcccdef
[['a', 3], ['b', 3], ['c', 3], ['d', 1], ['e', 1], ['f', 1]]
2021-01-20