nak*_*iya 18 python functional-programming
返回对象的名称None为list.reverse().所以这个代码在我打电话时失败了solution(k).我有什么方法可以绕过临时的吗?或者我应该怎么做?
fCamel = 'F'
bCamel = 'B'
gap = ' '
k = ['F', ' ', 'B', 'F']
def solution(formation):
return ((formation.index(bCamel) > (len(formation) - 1 - (formation.reverse()).index(fCamel))))
Run Code Online (Sandbox Code Playgroud)
ps这是我在python中的第一个代码.我觉得它很实用.
GWW*_*GWW 24
您可以使用reversed(formation)返回的反向迭代器formation.当你调用formation.reverse()它时,会对列表进行反转并返回None.
编辑:
我看到你现在要做的事情,在我看来,用列表理解来做这件事更容易:
def solution(formation):
return len([k for k in formation[formation.index(bCamel)+1:] if k == fCamel]) == 0
Run Code Online (Sandbox Code Playgroud)
这基本上会查看第一个元素之后的bCamel所有元素,并收集具有该值的所有元素fCamel.如果该列表的长度为== 0,那么您就有了解决方案.
以下是一些例子:
>>> k = ['F','F','B','B','F']
>>> solution(k)
False
>>> k = ['F','F','B','B','B']
>>> solution(k)
True
>>> k = ['F','F','B','F','F','B','B']
>>> solution(k)
False
>>>
Run Code Online (Sandbox Code Playgroud)
Leo*_*eon 19
您可以使用切片返回反转列表:
l[::-1]
Run Code Online (Sandbox Code Playgroud)
list.reverse 就地反转。那是:
>>> l = [1, 2, 3]
>>> l.reverse()
>>> l
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
请查阅Python 文档,类似的内容都在那里。您还可以尝试内置的“帮助”:
help(l.reverse) 有关内置函数反向的帮助:
verse(...) L.reverse() --就地反向
要构建GWW的答案,如果您希望此代码能够像您一样工作list(reversed(formation)).如果你真的想要能够使用formation.reverse(),你必须继承list:
>>> class ReversableList(list):
... def reverse(self):
... return list(reversed(self))
...
>>> x = ReversableList([1,2,3])
>>> x.reverse()
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
当然,这是否可取是另一个问题.
小智 5
我刚刚遇到这个问题,想为来自 javascript 背景的 Python 新用户澄清一些事情。
在 javascript 中,a.reverse() 会原地反转并在调用时返回数组。
JavaScript:
var a = [2, 3 ,4]
console.log(a.reverse())
// outputs [4, 3, 2]
console.log(a)
// outputs [4, 3, 2]
Run Code Online (Sandbox Code Playgroud)
在Python中,a.reverse()原地反转,但不返回数组。这就是让我感到困惑的原因。
在Python中:
a = [2, 3, 4]
a.reverse()
print(a)
# outputs [4, 3, 2]
# can't do print(a.reverse())
Run Code Online (Sandbox Code Playgroud)