第二个列表被一遍又一遍地填充。此python代码有什么问题?

问题描述 投票:-2回答:1
def firstnonrepeatingchar(str1):
    list1=list(str1)
    list2=[]
    print(list1)
    for ch in list1:
        if ch not in list2:
            a=list1.count(ch)
            list2.append(a)
    print(list2)
    for x in list2:
        if(x==1):
            print(list1[x+2])



string1="aaabccc"
firstnonrepeatingchar(string1)

输出给出的list2为[3,3,3,1,3,3,3]如何使其仅作为[3,1,3]?

python list append
1个回答
0
投票

您之所以得到这个[3,3,3,1,3,3,3],是因为您每次遇到角色时都要追加。

一种更好的方法是使用不允许重复并保留顺序的OrderedSet

from orderedset import OrderedSet

def firstnonrepeatingchar(str1):
    s = OrderedSet(str1)
    list2 = []
    for ch in s:
        list2.append(str1.count(ch))
    print(list2)

string1="aaabccc"
firstnonrepeatingchar(string1)
© www.soinside.com 2019 - 2024. All rights reserved.