猿问

Python 中的列表迭代

我需要取一个字符串,例如 AABCAAADA 并将其拆分为给定数量的字符串,比如说 3(但这可以是任何东西)。然后,在这些字符串中,删除重复的字符。对于给定的示例,此代码的输出应为 AB、CA 和 AD。


我的代码为最后一个示例生成 DA,我不明白为什么会这样。


import textwrap




def splitToT(string, number):

    wordsList = list(textwrap.wrap(string,number))

    for word in wordsList:

        t = word

        makeU(t)


def makeU(t):

    list1 = list(t)

    list2 = list(t)

    print"list1 = "

    print list1

    print"list2 = "

    print list2

    for l1e in list1:

        print "element from list1"

        print l1e

        count = 0

        print"COUNT RESET"

        for l2e in list2:

            print "\t Element in list2"

            print("\t" + l2e)

            if str(l1e) == str(l2e):

                count = count+1

                print count

                if count >= 2:

                    print("removing element")

                    print l2e

                    list2.remove(l2e)

                    print"\tlist 2 is now"

                    print list2

    print "LIST2 IS:"

    print list2

    print("-----")


def main():

    n = 3

    S = 'AABCAAADA'

    splitToT(S, n)


if __name__ == "__main__":

    main()


神不在的星期二
浏览 171回答 3
3回答

海绵宝宝撒

您的程序将删除第一组元素。AABCAAADA被打破了aabcaaada然后计算在列表中找到了多少个元素,如果找到两个或更多,则将其删除。所以aab需要a,并计算它,它大于2,所以它删除了第一个a。第二次迭代,它有ab,它a再次计数,但只有一个a,所以它通过了。第三次迭代很重要b,因为只有一次,它会将它添加到您的列表中。我会把你要删除的字母大写AabcAaAda最后一个看起来错了,但这是因为你的算法是如何设计的,它把最后一个字母留在那里。

HUWWW

下面是一些可以帮助你的东西import textwraps='ababbcdfgfhh'n=3 #or anything, you can take as inputlst=[]x=0lst=list(textwrap.wrap(s, n))print(lst)for x in lst:    print(''.join(sorted(set(x), key=x.index))) # removing the duplicates by using 'set'它将产生如下输出:['aba', 'bbc', 'dfg', 'fhh'] abbcdfgfh输出中的第一行被打印以检查 lst

跃然一笑

您可以将字符串视为列表,并将切片重建为集合,如下所示:s = list("AABCAAADA")def slicer(s, slices):    data = []    for x in slices:        # slices is a list of tuples, where x[0]        # is the starting slice and x[1] is the end        data.append(set(s[x[0]:x[1]]))    return dataslicer(s, [(0, 3), (3, 6), (6, 9)])为了保留字符串的顺序,我认为您必须遍历切片并且只弹出一次新的唯一值。但否则我认为方法是相同的
随时随地看视频慕课网APP

相关分类

Python
我要回答