(1)编写函数将列表中的元素循环右移k个位置。如0123456789,右移三个位置
def move(ls,k):
n = len(ls)
while k>0:
temp = ls[n-1]
for i in range(n-2,-1,-1):
ls[i+1] = ls[i]
ls[0] = temp
k = k-1
#print(ls)
return ls
ls = move([0,1,2,3,4,5,6,7,8,9],3)
file1 = open('test.txt','w')
for i in ls:
file1.write(str(i) + ' ')
file1.close()
def move(ls, k):
newls = ls[:]
n = len(ls)
for i in range(n):
ls[i] = newls[(i - k + n) % n]
string = [0,1,2,3,4,5,6,7,8,9]
move(string, 3)
string = ' '.join([str(s) for s in string])
file = open("d:\\test\\mydata.txt", "w")
file.write(string)
file.close()
给个例子参考:
def move(ls,k):
while k>0:
temp = ls[len(ls)-1]
ls[1:len(ls)] = ls[0:len(ls)-1]
ls[0] = temp
k = k-1
return ls
ls = [0,1,2,3,4,5,6,7,8,9]
ls = move(ls,4)
file = open('d:\\test\\mydata.txt', 'w')
file.write(' '.join(list(map(str, ls))))
file.close()
不用循环,列表切片就可一步做到,除非题目要求用循环。
def move(ls,k):
return [str(i) for i in (ls[len(ls)-k:] + ls[:len(ls)-k])]
ls = [0,1,2,3,4,5,6,7,8,9]
k = 3
string = ' '.join(move(ls,k))
print(string)
with open(r'd:\test\mydata.txt','w') as f:
f.write(string)
# 函数的定义
def move(ls, k):
while k > 0:
n = len(ls)
temp = ls[n - 1]
for i in range(1, n):
ls[n-i] = ls[n-i - 1]
ls[0] = temp
k = k - 1
return ls
# 文件操作
file = open("D:\\test\mydata.txt", 'w')
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
move(list1, 3)
file.write(str(list1))
file.close()