我需要从用户那里接收一个字符串,并将其显示在列表中,以便列表中的每个器官都包含[字母,它在一行中重复的数字]。
我以为我的代码不错,但是没用。我使用了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]]
itertools.groupby()在这里使用:
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]]