我必须将列表拆分为两个列表,然后将其拖曳多次。我无法为两个列表进行for循环(对于n的范围),因为无论n是什么。它只会洗牌一次。 这是我的函数代码:
def shuffle(xs,n=1):
il=list()
if len(xs)%2==0:
stop=int(len(xs)//2)
a=xs[:stop]
b=xs[stop:]
else:
stop=int(len(xs)//2)
a=xs[:stop]
b=xs[stop:]
if n>0:
for i in range(n):
shuffle=interleave(a,b)
else:
return
return shuffle
我之前定义了交错函数,似乎工作正常。
答案 0 :(得分:0)
假设您想要交错列表,您可以编写一个简单的递归函数来执行多次。交换列表的一件事是,我相信第一个和最后一个字符将始终相同。
def shuffle(lst, num):
'''
lst - is a list
num - is the amount of times to shuffle
'''
def interleave(lst1,lst2):
'''
lst1 and lst2 - are lists to be interleaved together
'''
if not lst1:
return lst2
elif not lst2:
return lst1
return lst1[0:1] + interleave(lst2, lst1[1:])
while num > 0:
lst = interleave(lst[:len(lst)/2], lst[len(lst)/2:])
print lst
num -= 1
return lst