【发布时间】:2013-11-11 02:46:06
【问题描述】:
我必须通过将列表拆分为两个列表然后将其随机播放 n 次来随机播放列表。我无法为两个列表创建一个 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
我的 interleave 函数是之前定义的,并且似乎工作正常。
【问题讨论】:
-
是什么让你认为列表只被洗牌一次?如果你要在里面做完全相同的事情,为什么你的 for 循环中有
if语句? -
使用与
shuffle不同的变量名。另外,确保每个代码块中都有一个return。 -
@justhalf 我编辑了它。那只是我在操纵它。这就是我所拥有的,它只会洗牌一次
标签: python for-loop python-3.x user-defined-functions