题目:编写程序生成一个包含15个介于1到100 之间随机整数的列表,将其循环左移5个元素。
方法1:使用切片,简单易理解,速度最快,可同时实现循环左移(k>0)和右移(k<0)。
def demo(lst, k):
return lst[k:] + lst[:k]
代码实现:
import random
a=[random.randint(1,100) for i in range(15)]
print(a)
def demo (a, n):
return (a[n:] + a[:n]) #n之后的部分连接n之前的部分
tmp = a[:]
print(demo(tmp,5))
运行结果:
方法2:特点是直接、容易理解,缺点是速度慢,只能实现循环左移。
def demo(lst, k):
temp = lst[:]
for i in range(k):
temp.append(temp.pop(0))
return temp
代码实现:
import random
a=[random.randint(1,50) for i in range(15)]
print(a)
for i in range(5):
a.append(a.pop(0))
print(a)
方法3:
代码实现:
import random
a=[random.randint(1,50) for i in range(15)]
print(a)
for i in range(5):
a.insert(len(a),a[0])
a.remove(a[0])
print(a)