正确使用Python中的remove()函数+在copyList上循环

时间:2016-11-17 11:40:49

标签: python list loops copy

我仍然是编码世界的新手,有时我会遇到最简单的事情......我写了下面的代码,当我想要超过它时,它会给我一个ValueError: list.remove(x): x not in list。我已经在原始列表的副本上循环,这就是为什么我有点迷失了。这是代码:

def revrot(strng, sz):
    if len(strng) == 0 or sz <= 0 or sz > len(strng):
        return ''
    else:
        list = []
        for i in strng:
            list.append(i)
        rest = len(strng)%sz
        for i in range(0,rest):
            list.pop()
        sum = 0
        res = ''
        while len(list) != 0:
            copyList = list[:]
            for i in range(0,sz):
                sum += 1
                if sum%2 == 0:
                    list2 = list[:sz]
                    list2.reverse()
                    res += ''.join(list2)
                    print(res)
                    for i in range(0,sz):
                        list.remove(copyList[i])
                else:
                    res += ''.join(list[1:]) + ''.join(list[0])
                    for i in range(0,sz):
                        list.remove(copyList[i])
    return res

有趣的部分从while循环开始。我以为我写了一个函数来删除list中的元素(在范围(0:sz)中)所以在某些时候list是空的,并且当while停止时是。{ 我没有得到的是:为什么我的remove()命令会抛出ValueError?当我单独测试时,它在控制台中完美运行:

copyList
Out[127]: ['1', '2', '3', '4', '5', '6', '7', '7', '9']

for i in range(0,4):
    list.remove(copyList[i])

list
Out[129]: ['5', '6', '7', '7', '9']

这就是为什么我在努力寻找错误,因为它在控制台中工作但在编辑器中却不行。谢谢你的帮助!

0 个答案:

没有答案