存储20个100-500以内的随机整数,编写程序找出列表中不能被10以内素数整除的元素。
import random
ls=[random.randint(1000,5000) for i in range(20)]
ts=(2,3,5,7)
l1=[0]*len(ls)
for i in range(len(ls)):
for t in ts:
if ls[i] % t==0:
l1[i]=1
l2=[]
for i in range(len(ls)):
if l1[i]==0:
l2.append(ls[i])
print("生成的20个1000~5000的随机数是:")
print(ls)
print("其中不能被10以内素数整除的数是:")
print(l2)
方法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)
import random
random_integers = [random.randint(100,500) for i in range(20)]
def is_prime(number): if number <= 1: return False for i in range(2, int(number ** 0.5) + 1): if number % i == 0: return False return True
result = set()
for number in random_integers: can_divide = False for i in range(2, 10): if is_prime(i) and number % i == 0: can_divide = True break if not can_divide: result.add(number)
print("随机整数列表:", random_integers) print("不能被10以内的素数整除的整数:", result)