Python - 与长度一起使用时需要帮助理解()vs []

时间:2017-03-09 14:47:34

标签: python

我是Python的新手,我正在搞乱这个,我不知道为什么当我将括号更改为括号时出现错误,或者为什么我可以'只需使用len(text - 1)。

我正在看这段代码:

def reverse(text):
    result = ""
    length = len(text)
    for i in text:
        result += text[length - 1]
        length -= 1
    return result

非常感谢任何理解这一点的帮助!

谢谢!

5 个答案:

答案 0 :(得分:1)

当您使用len(text - 1)时,您尝试从int1)中减去strtext)。它是python中不受支持的操作(而且,不可能)。要获得所需字符串的一部分,您必须使用text[length - 1]

答案 1 :(得分:1)

您无法使用text - 1,因为这没有意义;你不能从字符串中取1。

现在,至于len(...)这是一个函数,因此调用()而不是[]。你传递的东西你想要的长度。

text[length - 1]正在索引字符串,位于某个位置,并遵循索引子脚本的列表语法。

答案 2 :(得分:1)

Python圆括号

圆括号在Python中扮演许多不同的角色,这些角色是他们扮演的主要角色:

数学角色:

Python括号在数学中就像括号一样,因为它们位于Python Priority Precedence的顶部

这意味着:

>>> 3 + 4 * 2

返回:

12

括号括号:

>>> (3 + 4) * 2

返回:

14

但并非如此,他们的优先级也扩展到布尔表达式:

例如:

False and False or True and True
True之前执行and时,

评估为or。但是,如果添加一些括号:

False and (False or True) and True

False

之前执行or时评估为and

元组

在python中,当您在tuple中添加内容时,使用()表示法。

功能

声明或调用函数时,总是需要在函数名后添加括号。把它们想象成一个放入参数的篮子。如果你忘了它们,Python解释器会认为你正在调用一个变量,例如:

list

这是一个名为list的变量,并没有什么特别的

list() #Empty basket

然而,这是对函数的调用,因为有一个"篮子"

Square Brackets

Square Brackets也有很多角色:

解释

在python中,如果要声明list而不是元组,则使用方括号。

列表理解

列表理解实际上非常复杂,read this以获取更多信息,但只知道它使用方括号

查找

方括号的主要用途是在列表,元组或字典中查找值。把它想象成谷歌搜索栏:你写下你想要的东西,它会告诉你它有什么。例如:

tuple = (2, 4)

如果你想获得4,你需要查找元组的第二个值:

tuple[1] #The first value is 0

切片

切片只是仅采用列表的某些部分(或元组,字典甚至字符串)的想法。以下是Greg Hewgill的解释(https://stackoverflow.com/a/509295/7541446):

  

还有步骤值,可以与上述任何一个一起使用:

     

a [start:end:step] #start through not past end,by step

     

要记住的关键点是:结束值代表第一个   不在选定切片中的值。所以,结束之间的区别   并且start是所选元素的数量(如果步长为1,则为   默认值)。

     

另一个特征是开始或结束可能是负数,其中   意味着它从数组的末尾而不是从开头开始计数。   所以:

     

a [-1]#数组中的最后一项a [-2:]#最后两项   数组a [: - 2]#除最后两项外的所有内容

     

如果项目少于您的要求,Python对程序员很友好   对于。例如,如果您要求[: - 2]并且只包含一个   你得到一个空列表而不是错误。有时你   我更喜欢这个错误,所以你必须意识到这可能会发生。

我希望这为解释括号和方括号之间的区别提供了有用的见解。

这意味着在您的问题中len()是一个将text放入购物篮的功能。但是,当您致电text[length-1]时,您正在查找位置length-1

的值

答案 3 :(得分:0)

python内置函数len()返回参数中对象的数量长度,例如

temp = [1, 2, 3, 4]
length = len(temp)

然后在这种情况下len()将返回4。但如果有人写

length = len(temp-1)

然后

  

TEMP-1

不是有效的对象,因此您无法使用它。

答案 4 :(得分:0)

你不能做len(text-1)的原因是因为text是你试图反转的字符串类型,并且是一个字符串你不能将它与数字组合(除非它们是一个字符串,但这是一个不同的故事)没有收到错误。因此你执行len(text)-1因为len(文本)等于文本的长度(假设为4),然后你可以从4中减去1,因为4是一个整数。

在执行text[length-1]时需要括号而不是括号的原因是因为在python中尝试从字符串中获取单个值需要使用string[]并在字符串中放置一个位置在 - 的里面 []。您使用partakes来调用print(string)len(text)等函数,因此将text(length-1)放入会产生一个错误,该错误基本上表示程序没有名为“text”的函数,而且它没有知道要做什么。

希望这会有所帮助。如果您还有其他问题,请告诉我。