Python实验之——集合与字典

1387-常同学

发表文章数:44

热门标签

,
首页 » LeetCode » 正文


刚开始我没仔细看,写的有点着急,后来发现这章只要把实验PPT给的例子看懂就差不多了。。。

  1. 随机产生 2 组各个数字的列表,每组 10 个数字,如下要求:每个数字取值范围 [10,20],统计 20 个数字中,一共有多少个不同的数字?2 组中,不重复的数字有几个?分别是什么?2 组中,重复的数字有几个?分别是什么?
import random
x=[random.randint(10,20) for i in range(10)]
y=[random.randint(10,20) for i in range(10)]
z=list(x+y)
z.sort()
count=1
sum=0
m=[]
n=[]
for i in range(0,19):#统计z中不同的数字
    if z[i]!=z[i+1]:
        count+=1

y.sort()#这里题目有点歧义,我理解为统计y中的数字
for j in range(0,9):
    if y[j]==y[j+1] and y[j] not in m:#重复数字统计
           sum+=1
           m.append(y[j])

n=list(set(y)-set(m))

print(x)
print(y)
print(z)
print(count)
print("2组中重复数字个数以及内容:",sum,m)
print("2组中不重复数字个数以及内容:", len(n),n )

测试:
[15, 12, 19, 14, 17, 14, 17, 17, 13, 20]
[10, 12, 12, 12, 15, 16, 17, 18, 18, 19]
[10, 12, 12, 12, 12, 13, 14, 14, 15, 15, 16, 17, 17, 17, 17, 18, 18, 19, 19, 20]
10
2组中重复数字个数以及内容: 2 [12, 18]
2组中不重复数字个数以及内容: 5 [10, 15, 16, 17, 19]

进程已结束,退出代码0

2.数字重复统计:随机生成 100 个整数,数字的范围是 [-1000, 1000],升序输出所有不同的数字及其每个数字重复的次数。

import random
x=[random.randint(-1000,1000) for i in range(100)]
x.sort()
sort_x={}
count_x=[]
sort_x1=[]
for i in range(len(x)):
    count_x.append(x.count(x[i]))
    sort_x[x[i]] = count_x[i]

for k, v in sort_x.items():
    sort_x1.append((k, v))
print(sort_x1)

3.字符串重复统计:字符表’abcdefghijklmnopqrstuvwxyz’,随机挑选 2 个字母组成字符串,共挑选 100个,降序输出所有不同的字符串及重复的次数。

import random
x=[]
for i in range(100):
   slice = ''.join(random.sample('abcdefghijklmnopqrstuvwxyz'+'abcdefghijklmnopqrstuvwxyz', 2))  # 从list中随机获取2个元素,作为一个片断返回
   print(slice,end=' ')
   x.append(slice)
print('/n')
print(x)
x=sorted(x,reverse=True)#降序输出
print(x)

count_list=[]#统计重复次数以及输出
sort_list={}
sort_list1=[]
for i in range(len(x)):
    count_list.append(x.count(x[i]))
    sort_list[x[i]]=count_list[i]
for k,v in sort_list.items():
    sort_list1.append((k, v))
print('/n')
print(sort_list1)

4.实现埃拉托色尼筛选法:古希腊时发明的一个用来计算素数的函数。选择一个整数 n,该函数计算小于n 的所有素数。首先把所有从 1 到 n 的数字插入一个集合,然后删除 2 的所有倍数(除 2 之外)也就是 4、6、8、10、12……。再删除 3 的所有倍数,也就是 6、9、12、15……直到 √n。剩余的数字都是素数。

import copy
def sushu(n):
 x=set()
 for i in range(1,n+1):#插入集合
      x.add(i)
 print(x)
 n=int(n**(0.5))
 x_1 = copy.deepcopy(x)

 for i in  x:#删除从2-√n的倍数
     x_1=copy.deepcopy(x_1)
     for j in range(2,n+1):
           if  i % j==0 and i!=j:
             x_1.discard(i)

 print(x_1)

sushu(25)

结果:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}
{1, 2, 3, 5, 7, 11, 13, 17, 19, 23}

进程已结束,退出代码0

1不是素数,但是题目没有去掉,暂时就这样写。好像到这里实验就木有啦,同学们白白!!!

未经允许不得转载:作者:1387-常同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Python实验之——集合与字典》 发布于2020-12-07

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录