N循环字符串然后移动到末尾



N循环克隆第一个字符串,然后移动到数组的末尾

name = ["A" , "B", "C"]

这里有一种通过编写递归函数来完成这项工作的优雅方法:

def f(N, n, result):
if n == 0:
return result[-1]
else:
return f(N, n - 1, result[1:] + [result[0]] * N)
def g(N, n, result):
for _ in range(n):
result = result[1:] + list(result[0]) * N
return result[-1]
N = 2
print("N: " + str(N))
for n in range(1, 3):
result = "".join(f(N, n, ["A" , "B", "C"]))
last = result[-1]
print("_" * 5)
print("n: " + str(n))
print("Result: " + str(result))
print("Last: " + str(last))

这里的结果:

N: 2
_____
n: 1
Result: BCAA
Last: A
_____
n: 2
Result: CAABB
Last: B

这个方法(f(比另一个答案(g(慢得多,如果在我的计算机上n超过997,你会受到python递归深度的限制。您可以使用sys.setrecursionlimit(xxx)进行更改

时间比较:

  • f:对于从1到997:2.130194664001465 s的n
  • g: 对于从1到997:1.02400803565979 s的n

试试这个代码:

def my_func() :
name = ["A" , "B", "C"]
value = input("Number of n : ")
value = int(value)
for n in range(0, value):
name = name[1:] + list(name[0]) * 2
print(name)
return name[-1]

print(my_func())

输出:

Number of n : 2
['B', 'C', 'A', 'A']
['C', 'A', 'A', 'B', 'B']
B

也许能帮到你!

name = ["A" , "B", "C"]
def my_func() :
value = input("Number of n : ")
value = int(value)
for i in range(value):
# get first element then remove
first_element = name.pop(0)
# move to then end list name
name.extend([first_element,first_element])
# print current list name
print(name)
#print last name
print(name[-1])

测试用例:

Number of n : 2
['B', 'C', 'A', 'A']
['C', 'A', 'A', 'B', 'B']
B
Number of n : 3
['B', 'C', 'A', 'A']
['C', 'A', 'A', 'B', 'B']
['A', 'A', 'B', 'B', 'C', 'C']
C

最新更新