Python 3.x 在Python3中向左列出旋转
我试图创建一个列表(b),即列表(a)将a的成员向左旋转k次。我在Python 3上提出了以下观点:Python 3.x 在Python3中向左列出旋转,python-3.x,Python 3.x,我试图创建一个列表(b),即列表(a)将a的成员向左旋转k次。我在Python 3上提出了以下观点: n = 5 k = 4 a = [1,2,3,4,5] b = [] for i in a: if (i + k) <= (n - 1): b.append(a[i+k]) elif (i+k-n) < (n-1): b.append(a[i+k-n]) print(b) n=5 k=4
n = 5
k = 4
a = [1,2,3,4,5]
b = []
for i in a:
if (i + k) <= (n - 1):
b.append(a[i+k])
elif (i+k-n) < (n-1):
b.append(a[i+k-n])
print(b)
n=5
k=4
a=[1,2,3,4,5]
b=[]
对于我来说,在一个:
如果(i+k)是一个简单的解:
k = k % len(a) #we don't care about shifting x*len(a) times since it does not have any effect
b = a[k:] + a[:k]
感谢@RemcoGerlich帮助我认识到我的错误!下面是我如何快速修复代码的:
n = 5
k = 4
a = [1,2,3,4,5]
b = []
i = 0
while (i < n):
if (i + k) <= (n - 1):
b.append(a[i+k])
elif (i+k-n) < (n-1):
b.append(a[i+k-n])
i = i+1
print(b)
n=5
k=4
a=[1,2,3,4,5]
b=[]
i=0
而(i 如果(i+k)注意到i
循环通过a
中的值,这应该与您的算法无关,您正在对它们进行算术运算,就像它们是索引一样。可能重复@RemcoGerlich您完全正确!改变for循环一段时间,trickhi@YoavGlazner做了一个循环,你能帮我们解开你的代码吗?我在休息了15年之后开始学习编程,呵呵,我对Python的语法不太熟悉,因为我才真正开始学习it@Salvatore-我猜您不知道python的切片表示法-看看这个答案,谢谢!:)@约阿夫格拉兹纳