Python—查找列表的最后一个元素
我正在codingbat.com上做一些练习。我一直坚持的练习是: 给定一个整数数组,如果6作为数组中的第一个或最后一个元素出现,则返回True。数组的长度为1或更大Python—查找列表的最后一个元素,python,Python,我正在codingbat.com上做一些练习。我一直坚持的练习是: 给定一个整数数组,如果6作为数组中的第一个或最后一个元素出现,则返回True。数组的长度为1或更大 first_last6([1, 2, 6]) → True first_last6([6, 1, 2, 3]) → True first_last6([13, 6, 1, 2, 3]) → False" 这是我的答案。我知道这是不正确的,但我不确定我做错了什么 def first_last6(nums): if nu
first_last6([1, 2, 6]) → True
first_last6([6, 1, 2, 3]) → True
first_last6([13, 6, 1, 2, 3]) → False"
这是我的答案。我知道这是不正确的,但我不确定我做错了什么
def first_last6(nums):
if nums[0] == 6 or nums[len(nums)-1] == 6:
return True
else:
return False
更新:
阅读下面的注释后,6==llist[0]或6==llist[-1]
将比创建元组更有效
只需执行中的6(llist[0],llist[-1])
,您不需要为此编写函数。更新:
阅读下面的注释后,6==llist[0]或6==llist[-1]
将比创建元组更有效
只需在(llist[0],llist[-1])中执行
6即可
,您不需要为此编写函数。您的解决方案实际上会起作用。不过,这里有一个稍微好一点的解决方案:
def first_last6(nums):
return nums[0] == 6 or nums[-1] == 6
您的解决方案实际上会起作用。但这里有一个稍微好一点的:
def first_last6(nums):
return nums[0] == 6 or nums[-1] == 6
nums[-1]
提供最后一个元素nums[-1]
提供最后一个元素
L[0]==6 or L[-1]==6
L[0]
检查0
-th索引处的元素,即第一个元素L[-1]
检查-1
-th索引处的元素,即最后一个元素。请注意,这相当于检查L[len(L)-1]
如果你想让它变得更好和可扩展,你可以考虑这样做:
CHECK_INDICES = (0,-1)
any(L[i]==6 for i in CHECK_INDICES)
L[0]
检查0
-th索引处的元素,即第一个元素L[-1]
检查-1
-th索引处的元素,即最后一个元素。请注意,这相当于检查L[len(L)-1]
如果你想让它变得更好和可扩展,你可以考虑这样做:
CHECK_INDICES = (0,-1)
any(L[i]==6 for i in CHECK_INDICES)
对于在python中查找最后一个索引,可以使用-1作为列表的索引 您只需要更改nums[-1]而不是nums[len(nums)-1] def first_last6(nums):
对于在python中查找最后一个索引,可以使用-1作为列表的索引 您只需要更改nums[-1]而不是nums[len(nums)-1] def first_last6(nums):
在Python3中,您也可以像这样获得第一个和最后一个。如果nums中只有一个项,则会抛出
ValueError
def first_last6(nums):
first, *middle, last = nums
return first == 6 or last == 6
在Python3中,您也可以像这样获得第一个和最后一个。如果nums中只有一个项,则会抛出
ValueError
def first_last6(nums):
first, *middle, last = nums
return first == 6 or last == 6
这就是我作为面试官想要的答案为什么要生成一个元组并使用成员资格测试而不是一个简单的
或子句?@D.Shawley同意:@JoranBeasley:为什么要在内存中创建一个元组?L[0]==6或L[-1]==6
有效。如果你在寻找可伸缩性,any(L[I]==6表示I在(0,-1))
会更好,因为创建的元组包含int
s,而不是列表中包含的任何对象,这可能需要更多的内存。我想你的any
答案……我不知道,
中的只是一个很好的python操作符,这就是我作为采访者想要的答案。为什么要生成元组并使用成员资格sting而不是简单的或子句?@D.Shawley同意:@JoranBeasley:为什么要在内存中创建元组?L[0]==6或L[-1]==6
有效。如果你在寻找可伸缩性,any(对于(0,-1)中的i,L[i]==6)
会更好,因为创建的元组包含int
s,而不是列表中包含的任何对象,这可能需要更多的内存。我不知道any
中的只是一个很好的python操作符。你怎么知道它不正确?它给出了错误的答案吗?它失败了吗代码>?您的计算机爆炸了吗?如果nums[0]==6或nums[len(nums)-1]==6:return True
…这个构造就是如果为True:return True
为什么不直接返回布尔结果?实际上我不知道它是否错了。这对我来说很有意义,但当我在codingbat.com上提交代码时,它说它不正确。我应该给自己更多的信任!你怎么知道它不正确?它给出了错误的answ吗呃?它是否因语法错误而失败?您的计算机是否发生爆炸?如果nums[0]==6或nums[len(nums)-1]==6:return True
…这个结构就是如果为True:return True
为什么不直接返回布尔结果?实际上我不知道它是否错了。这对我来说很有意义,但当我在codingbat.com上提交代码时,它说它不正确。我应该给自己更多的信任!