为了账号安全,请及时绑定邮箱和手机立即绑定

Python 中的列表迭代

Python 中的列表迭代

神不在的星期二 2021-07-28 17:56:33
我需要取一个字符串,例如 AABCAAADA 并将其拆分为给定数量的字符串,比如说 3(但这可以是任何东西)。然后,在这些字符串中,删除重复的字符。对于给定的示例,此代码的输出应为 AB、CA 和 AD。我的代码为最后一个示例生成 DA,我不明白为什么会这样。import textwrapdef 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()
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

您的程序将删除第一组元素。


AABCAAADA

被打破了


aab

caa

ada

然后计算在列表中找到了多少个元素,如果找到两个或更多,则将其删除。


所以aab需要a,并计算它,它大于2,所以它删除了第一个a。第二次迭代,它有ab,它a再次计数,但只有一个a,所以它通过了。

第三次迭代很重要b,因为只有一次,它会将它添加到您的列表中。


我会把你要删除的字母大写


Aab

cAa

Ada

最后一个看起来错了,但这是因为你的算法是如何设计的,它把最后一个字母留在那里。


查看完整回答
反对 回复 2021-08-03
?
HUWWW

TA贡献1874条经验 获得超12个赞

下面是一些可以帮助你的东西


import textwrap

s='ababbcdfgfhh'

n=3 #or anything, you can take as input

lst=[]

x=0

lst=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'] 

ab

bc

dfg

fh

输出中的第一行被打印以检查 lst


查看完整回答
反对 回复 2021-08-03
?
跃然一笑

TA贡献1826条经验 获得超6个赞

您可以将字符串视为列表,并将切片重建为集合,如下所示:


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 data

slicer(s, [(0, 3), (3, 6), (6, 9)])

为了保留字符串的顺序,我认为您必须遍历切片并且只弹出一次新的唯一值。但否则我认为方法是相同的


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信