考虑下面的Python代码,我在新的list2中添加了所有项目,索引从list1的1到3:
for ind, obj in enumerate(list1):
if 4> ind > 0: list2.append(obj)
Run Code Online (Sandbox Code Playgroud)
如果我无法通过枚举访问索引,你会如何使用python list comprehension编写这个?
就像是:
list2 = [x for x in list1 if 4>ind>0]
Run Code Online (Sandbox Code Playgroud)
但由于我没有'ind'号码,这会有效吗?:
list2 = [x for x in enumerate(list1) if 4>ind>0]
Run Code Online (Sandbox Code Playgroud) 我把以下代码放在一起,以检查字符串/单词是否按字母顺序排列:
def isInAlphabeticalOrder(word):
word1=sorted(word)
word2=[]
for i in word:
word2.append(i)
if word2 == word1:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
但我觉得除了将字符串转换成列表之外,还有一种更有效的方法(更少的代码行).是不是有一个操作数来按字母顺序排序字符串而不将每个字符串转换为列表?任何人都可以提出更有效的方法吗?
考虑Python中的这个基本递归:
def fibonacci(number):
if number == 0: return 0
elif number == 1:
return 1
else:
return fibonacci(number-1) + fibonacci(number-2)
Run Code Online (Sandbox Code Playgroud)
根据Fibonacci系列的(n-1)+(n-2)函数,这是有意义的.
Python如何执行包含不在同一代码行内但在同一代码行内的另一个递归的递归?'finobacci(number-1)'是否完成所有递归直到达到'1'然后它与'fibonacci(number-2)'一样并添加它们?
为了比较,下面的递归函数用于将数字"x"提升为幂'y',我可以理解递归,def函数调用自身直到y == 0,因为在一行中只有一个递归调用.仍然不应该所有结果都是'1',因为当y == 0时,执行的最后一个命令是'return 1',因此不返回x?
def power(x, y):
if y == 0:
return 1
else:
return x*power(x, y-1)
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个递归函数,用于添加数字中的所有数字.这是我想出的:
def sumOfDigits(num):
num=str(num)
if len(num)==0:
return 0
elif len(num)==1:
return int(num)
elif len(num)>1:
return int(num[0]) + int(num[-1]) + int(sumOfDigits(num[1:-1]))
Run Code Online (Sandbox Code Playgroud)
这似乎适用于几乎任何数字:
sumOfDigits(999999999)
>>>81
sumOfDigits(1234)
>>>10
sumOfDigits(111)
>>>3
sumOfDigits(1)
>>>1
sumOfDigits(0)
>>>0
Run Code Online (Sandbox Code Playgroud)
如果数字以'0'开头,会发生奇怪的事情
sumOfDigits(012)
>>>1
sumOfDigits(0123)
>>>11
sumOfDigits(00010)
>>>8
Run Code Online (Sandbox Code Playgroud)
我在这里失踪了什么?