Python 3.x 上述代码是否有解释?

Python 3.x 上述代码是否有解释?,python-3.x,pandas,Python 3.x,Pandas,你能给我解释一下下面提到的代码吗。因为我自己无法理解这些代码。我假设这是列的defnine函数,但不确定 def remove_common_text(lst): if len(lst) > 4: for itm in lst: if len(itm)>1: rep = True while rep == True:

你能给我解释一下下面提到的代码吗。因为我自己无法理解这些代码。我假设这是列的defnine函数,但不确定

def remove_common_text(lst):
    if len(lst) > 4:
            for itm in lst:
                if len(itm)>1:
                    rep = True
                    while rep == True:
                        ctr = 0
                        ctr2 = 0
                        for itm2 in lst:
                            if len(itm2)>0:
                                if itm[0] == itm2[0]:
                                    ctr = ctr + 1
                                if itm[-1] == itm2[-1]:
                                    ctr2 = ctr2 + 1
                        if ctr > 4:
                            str = itm[0]
                            for itm2 in lst:
                                if len(itm2)>0:
                                    if itm2[0] == str and len(itm2)>1:
                                        del itm2[0]
                        if ctr2 > 4:
                            str2 = itm[-1]
                            for itm2 in lst:
                                if len(itm2)>0:
                                    if itm2[-1] == str2 and len(itm2)>1:
                                        del itm2[-1]
                        if (ctr <= 4 and ctr2 <= 4) or len(itm)<=1: rep = False
    id_unique = documents['ID'].unique()
    print(id_unique)
    for id in id_unique:
        remove_common_text(documents[documents.ID==id]['split_clean'])
        print(id)
def删除公共文本(lst):
如果len(lst)>4:
对于lst中的itm:
如果len(itm)>1:
rep=True
当rep==True时:
ctr=0
ctr2=0
对于lst中的itm2:
如果len(itm2)>0:
如果itm[0]==itm2[0]:
ctr=ctr+1
如果itm[-1]==itm2[-1]:
ctr2=ctr2+1
如果ctr>4:
str=itm[0]
对于lst中的itm2:
如果len(itm2)>0:
如果itm2[0]==str和len(itm2)>1:
del itm2[0]
如果ctr2>4:
str2=itm[-1]
对于lst中的itm2:
如果len(itm2)>0:
如果itm2[-1]==str2和len(itm2)>1:
del itm2[-1]

如果(ctr我要写
删除公共文本(lst)
的功能。下面的内容是熊猫,所以也许其他人能比我回答得更好

参数lst应该是这样的:
[['a','b','c','d','e'],['a','b','1','d','e'],['a','b','2','d','e'],['a','b','3','d','e'],['a','b','3','d','e'],['a','b','d','e'],['a','b','c','d','d',

python代码片段分为3个部分:

  • 它计算每个“项目”中类似元素的数量,并将其记录为计数器变量
    ctr
    ctr2
    ,从每个“项目”的开始和结束。请记住这一粗体部分,因为这是这里独有的
  • 它删除记录的相似性ctr
  • 然后删除记录的相似性ctr2
  • 独占部分:它从开始到结束都会检查,因此如果您向它抛出“abcde”和“a1bcd2e”。即使“bcd”元素很常见,它也会在1和2处停止检查

    如果您想知道,对于上述情况,它给出了
    [['c']、['1']、['2']、['3']、['4']、['c'、['d'、'-1']

    还有一个测试用例: 输入/输出:
    ['a','b','c','d','e'],['a','b','1','d','e','j'],['a','b','2','d','e'],['a','b','3','d','e'],['a','b','4','d','e'],['a','b','c','d','e']


    O/p:
    [[c']、[1'、[d'、[e'、[j']、[2']、[3']、[4']、[c']

    即使你不理解每一步,你知道它应该做什么吗?如果是这样,你可以为它编写一个单元测试,看看它做了什么。