Python 3.x 在Python3中向左列出旋转

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

我试图创建一个列表(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
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的切片表示法-看看这个答案,谢谢!:)@约阿夫格拉兹纳