Python 数一数字母并显示在列表中
我需要从用户那里接收一个字符串,将其显示在列表中,以便列表中的每个器官都包含[字母,它在一行中重复的数字] 我认为我的代码很好,但不起作用。 我使用了,我看到了一个问题,就是我的var.next和current始终保持相同的值 有人有主意吗 这是我的密码:Python 数一数字母并显示在列表中,python,string,list,Python,String,List,我需要从用户那里接收一个字符串,将其显示在列表中,以便列表中的每个器官都包含[字母,它在一行中重复的数字] 我认为我的代码很好,但不起作用。 我使用了,我看到了一个问题,就是我的var.next和current始终保持相同的值 有人有主意吗 这是我的密码: string = raw_input("Enter a string:") i=0 my_list=[] current=string[i] next=string[i+1] counter=1
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
在此处使用:
或不使用库:
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]]
在此处使用:
或不使用库:
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]]
Aswini代码的更简单变体:
string = raw_input("Enter a string:")
lis = []
for c in string:
if len(lis) != 0 and lis[-1][0] == c:
lis[-1][1] += 1
else:
lis.append([c, 1])
print lis
Aswini代码的更简单变体:
string = raw_input("Enter a string:")
lis = []
for c in string:
if len(lis) != 0 and lis[-1][0] == c:
lis[-1][1] += 1
else:
lis.append([c, 1])
print lis
使用defaultdict可以非常轻松地执行此操作:
import collections
defaultdict=collections.defaultdict
count=defaultdict(int)
string="hello world"
for x in string:
count[x]+=1
要在列表中显示,您可以执行以下操作:
count.items()
在这种情况下,将返回:
[(' ', 1), ('e', 1), ('d', 1), ('h', 1), ('l', 3), ('o', 2), ('r', 1), ('w', 1)]
使用defaultdict可以非常轻松地执行此操作:
import collections
defaultdict=collections.defaultdict
count=defaultdict(int)
string="hello world"
for x in string:
count[x]+=1
要在列表中显示,您可以执行以下操作:
count.items()
在这种情况下,将返回:
[(' ', 1), ('e', 1), ('d', 1), ('h', 1), ('l', 3), ('o', 2), ('r', 1), ('w', 1)]
我们还没学会。。我们刚刚上了第二节课。我更喜欢用我们喜欢的东西learnt@user1562379还添加了一个简单的解决方案。哇!tnx太多了@Ashwini Chaudhary,我已经试着解决了好几天了。@user1562379:你可以让这个简单的解决方案变得更简单-看看我的答案为什么你要使用
range(len(string))
,你可以像我一样直接遍历字符串。我们还没有学会它。。我们刚刚上了第二节课。我更喜欢用我们喜欢的东西learnt@user1562379还添加了一个简单的解决方案。哇!tnx这么多@Ashwini Chaudhary,我已经试着解决了好几天了。@user1562379:你可以让这个简单的解决方案变得更简单-看看我的答案为什么你要使用range(len(string))
,你可以像我一样直接遍历字符串。不,你不能,因为字典只会存储一次条目。(请参阅输出中缺少第一个o
)不,您不能,因为字典只会存储一次项。(请参阅输出中缺少第一个o
)请注意,有一个。您不应将该名称用于变量。请注意,有一个。您不应将该名称用于变量。