5.编写程序,生成200个在[0,100]的随机数,统计不同数字出现的次数,并按不同数字出现的次数降序输出。
import itertools
a = [1, 2, 3]
b = ['a', 'b', 'c', 'd']
c = ['@@', '$$']
#简化了参数, 增加了参数类型声明
def combination(*args:list):
config = [e for e in args]
res = []
tmp = []
dfs(res, tmp, config, 0)
print(res)
print('combination num:', len(res))
# dfs没变动
def dfs(res=[], tmp=[], config=[], i=0):
if i == len(config):
res.append(tmp.copy())
else:
for e in config[i]:
# change spot
tmp.append(e)
# new condition,new recursion
dfs(res, tmp, config, i + 1)
# restore spot
tmp.pop(len(tmp) - 1)
# 执行主体函数
combination(a,b,c)
'''
打印结果:
[[1, 'a', '@@'], [1, 'a', '$$'], [1, 'b', '@@'], [1, 'b', '$$'],
[1, 'c', '@@'], [1, 'c', '$$'], [1, 'd', '@@'], [1, 'd', '$$'],
[2, 'a', '@@'], [2, 'a', '$$'], [2, 'b', '@@'], [2, 'b', '$$'],
[2, 'c', '@@'], [2, 'c', '$$'], [2, 'd', '@@'], [2, 'd', '$$'],
[3, 'a', '@@'], [3, 'a', '$$'], [3, 'b', '@@'], [3, 'b', '$$'],
[3, 'c', '@@'], [3, 'c', '$$'], [3, 'd', '@@'], [3, 'd', '$$']]
24
'''
使用Python对一组200个在[0,100]范围内的随机数进行排序,并统计各个不同数字的出现次数,并以不同数字出现的次数的降序方式输出的解决方案:
import random
# 生成随机数列表
nums = [random.randint(0, 100) for i in range(200)]
# 排序
nums_sorted = sorted(nums)
# 统计不同数字的出现次数
count_dict = {}
for num in nums_sorted:
if num not in count_dict:
count_dict[num] = 1
else:
count_dict[num] += 1
# 按出现次数降序输出
result = sorted(count_dict.items(), key=lambda x:x[1], reverse=True)
print(result)
解释如下:
首先使用列表推导式生成200个在[0,100]范围内的随机数列表;
排序可以使用Python内置的sorted()
方法,对列表进行排序;
统计不同数字的出现次数需要用到一个字典,通过遍历排序后的列表记录每个数字出现的次数;
将字典转化为元素为二元组的列表,使用sorted()
方法按第二个元素(出现次数)进行降序排序。其中item()
方法可以将字典的键值对转化为元组。
以上代码为示例代码,可以直接运行并得到结果。
import random
rand_num_list = [random.randint(0, 100) for i in range(200)]
num_count_dict = {}
for i in rand_num_list:
if i in num_count_dict:
num_count_dict[i] += 1
else:
num_count_dict[i] = 1
# 按出现次数降序输出
result = sorted(num_count_dict.items(), key=lambda x: x[-1], reverse=True)
for item in result:
print("数字:%s,出现次数:%s" % (item[0], item[1]))
有帮助的话,请点采纳该答案~