Python if…和越界错误,该错误不';没道理吗?
我做DFS解决方案是为了好玩,但困扰我的是,通常如果有if…and语句,Python会在第一个语句为False后停止检查。在这种情况下,如果我把这两条语句放在一起,我会得到一个超出范围的索引 例如,这很好Python if…和越界错误,该错误不';没道理吗?,python,Python,我做DFS解决方案是为了好玩,但困扰我的是,通常如果有if…and语句,Python会在第一个语句为False后停止检查。在这种情况下,如果我把这两条语句放在一起,我会得到一个超出范围的索引 例如,这很好 if not nums: if s[i]=='I' and (path[i]<path[i+1]) or (s[i]=='D' and path[i]>path[i+1]): ret=min(ret, path) 如果不是nums: 如果s[i]=“
if not nums:
if s[i]=='I' and (path[i]<path[i+1]) or (s[i]=='D' and path[i]>path[i+1]):
ret=min(ret, path)
如果不是nums:
如果s[i]=“i”和(路径[i]路径[i+1]):
ret=min(ret,路径)
但我会得到一个错误:
if not nums and if s[i]=='I' and (path[i]<path[i+1]) or (s[i]=='D' and path[i]>path[i+1]):
ret=min(ret, path)
if not nums and if s[i]=“i”and(path[i]path[i+1]):
ret=min(ret,路径)
有人能发现我看不到的东西吗
class Solution(object):
def findPermutation(self, s):
"""
:type s: str
:rtype: List[int]
"""
def dfs(ret,nums,i,path):
if not nums:
if s[i]=='I' and (path[i]<path[i+1]) or (s[i]=='D' and path[i]>path[i+1]):
ret=min(ret, path)
for j in xrange(len(nums)):
if len(path)>1:
if (s[i]=='I' and path[i]>path[i+1]) or (s[i]=='D' and path[i]<path[i+1]):
return ret
ret=dfs(ret,nums[:j]+nums[j+1:],i+1,path+[nums[j]])
else:
ret=dfs(ret,nums[:j]+nums[j+1:],i,path+[nums[j]])
return ret
return dfs([len(s)+3],range(1,len(s)+2),0,[])
类解决方案(对象):
def findPermutation(自身):
"""
:类型s:str
:rtype:List[int]
"""
def dfs(ret、nums、i、路径):
如果不是nums:
如果s[i]=“i”和(路径[i]路径[i+1]):
ret=min(ret,路径)
对于x范围内的j(len(nums)):
如果len(路径)>1:
如果(s[i]='i'和路径[i]>path[i+1])或(s[i]='D'和路径[i],这似乎只是使用额外的if
的语法错误,请使用:
if not nums and
而不是
if not nums and if
这似乎只是一个语法错误,使用了额外的,如果,请使用:
if not nums and
而不是
if not nums and if
如果不是nums和是无效语法;你可能是指如果不是nums和@Haxet,我的回答能解决你的问题吗?如果不是nums和是无效语法;你可能是指如果不是nums和@Haxet,我的回答能解决你的问题吗?@foslock,谢谢你的改进。@foslock,谢谢你的改进。@foslock,谢谢你的改进愤怒。