尝试切片列表时出错

时间:2013-10-17 18:44:40

标签: python-3.x slice

我是一名新程序员!我刚刚开始使用Python,我真的很喜欢它!但现在我偶然发现了一个我似乎无法理解的特定错误。

现在我不打算在这里发布我的确切代码,但这是基本的想法:

这是编辑过的代码:

def function(parameter1, parameter2):
return parameter1[parameter2 + 1:]

当我为参数1使用数字时,它运行正常,例如:

function([5,6,7,8,9], 3)

但是当我使用字母和数字时,例如:

function("ABC34",3)

它给出错误:

builtins.TypeError: Can't convert 'list' object to str implicitly

编辑:

好吧所以我基本上都在寻找这样的输出:

 function([0,11,42,53,74,59,62,70,81,98], 3)
输出应该是:

[74, 59, 62, 70, 81, 98, 53, 0, 11, 42]

现在通过阅读下面的评论,我有点认为切片可能无法产生我想要的东西?

2 个答案:

答案 0 :(得分:2)

字符串可以像列表一样进行迭代。因此,将其分解为函数的每个部分对字符串的作用:

左:

#parameter1[parameter2 + 1:]

'abc34'[3+1:]
Out[13]: '4'

中间:

#[parameter2]

[3]
Out[14]: [3]

右:

#parameter1[:parameter2]

'abc34'[:3]
Out[15]: 'abc'

然后你可以看到python不知道如何做'4' + [3]

答案 1 :(得分:0)

(n python 2.7.3我得到了一个更有帮助的错误:

TypeError: cannot concatenate 'str' and 'list' objects

问题是你无法将[parameter2](整数列表)连接到parameter1[parameter2 + 1:](当parameter1是字符串时是一个字符串)。

字符串可以被切片,但它们不能与字符数组完全互换。