-8

> 这是怎么回事..

Code-1

def first_last6(nums):
    if nums[0]==6 or nums[len(nums)-1] == 6:
        return True
    else:
        return False

Code-2
def first_last6(nums):
  return (nums[0]==6 or nums[-1]== 6)

怎么两个都是真的?

4

3 回答 3

3

里面似乎有两个问题,所以我都会回答。

首先,为什么都nums[len(nums)-1]nums[-1]一样?指定索引时,Python 允许您使用负数,其解释如下:如果iinnums[i]为负数,则len(nums)+i返回索引。因此,基本上,[-1]将获得最后一个元素,[-2]倒数第二个等。

第二个问题是为什么这两种格式是相同的:

if expression:
    return True
else
    return False

return expression

expression在这种情况下是一个返回布尔类型的表达式,所以Trueor 或False. if声明准确地检查了这一点;如果表达式等于 true,它将返回 true,否则(如果表达式等于 false)它将返回 false。

因此,您可以(并且应该为了使其更简洁)只返回表达式本身,因为它已经是真或假。

如果情况expression本身不是布尔表达式,if 语句仍将检查它将评估的布尔类型(例如,非空字符串将为真,或者 0 以外的数字也为真)。为了保持简短的语法,您可以使用bool(expression), 如评论中提到的 larsmans 显式地将表达式转换为布尔值。

于 2012-10-25T16:56:41.900 回答
0

嗯,因为两者完全相同,并且它们都评估为 True。

于 2012-10-25T16:53:43.387 回答
0

nums[-k] 是 nums[len(nums)-k] 的简写。要获得第 k 个最后一个元素,请使用符号 nums[-k]。通常很清楚符号代表什么,编译器知道如何将 python 代码转换为机器代码,这就是为什么某些语言结构是可能的而其他语言结构是不可能的。其他短手包括 nums[:k] 来获取前 k 个元素, nums[:-k] 来获取所有元素直到第 k 个最后一个元素等。通过 google、python 文档,您会找到更多关于此的信息。列表操作是 Python 的一大优势。

http://www.diveintopython.net/native_data_types/lists.html

于 2012-10-25T16:58:50.260 回答