python - 如何打印缺少号码的列表?

标签 python

我有一段代码应该打印出一个数字列表,并且#每次列表中有重复的数字时,打印出来应该如下所示:
列表 = [6,7,7,9]
6#
7##
8
9#

这是我到目前为止所拥有的:

def print_list(list1):
    list2 = [int(i) for i in list1]
    full_set = [x for x in range(list2[0], list2[-1] + 1)]
    list2.extend(full_set)
    list3 = list(set(list2))
    result = sorted([(x, list2.count(x)) for x in list3], key=lambda y: y[1])
    result.sort()
    for elem in result:
        print("{0:>2}".format(elem[0]), "{}".format(elem[1]*"#"))

结果是错误的:

6##
7###
8#
9##

感谢任何帮助!

最佳答案

我认为这有效:

def print_list(list1):
    list2 = [x for x in range(list1[0], list1[-1] + 1)]
    list3 = list(set(list2))
    result = sorted([(x, list1.count(x)) for x in list3], key=lambda y: y[1])
    result.sort()
    for elem in result:
        print("{0:>2}".format(elem[0]), "{}".format(elem[1]*"#"))

print_list([6,7,7,9])

输出:

 6 #
 7 ##
 8 
 9 #

当前代码的问题在于,您将所需的一组数字添加到 list2 中,因此计算 list2 中每个数字的数量会得出一个超出您的预期。

这就是原始代码的 list2 的样子:

[6, 7, 7, 9, 6, 7, 8, 9]

这是因为您对 extend 方法的调用采用 list2 ( [6, 7, 7, 9] ),并添加 full_set ( [6, 7, 8, 9] ) 到它。因此,当您计算 list2 中每个数字的出现次数时,您计算的是原始数字,然后是一个额外的数字,因为您已使用 full_set 扩展了 list2 .

关于python - 如何打印缺少号码的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60248635/

相关文章:

python - 在声明之前引用python中的类

python - 在 matplotlib 中绘制时间图的 X 代码问题

python - 使用 python 将异国字符集转换为字符串

python - 如何从数据框中的分类变量中找到定量变量的平均值?

python - 在脚本不是当前使用的进程时捕获 Windows 键盘笔画

Python - 如何从列表中提取最后一个 x 元素

Python 请求流异步

python - 将数据框 reshape 为长格式 python

python - 跳转到 emacs 中的模型/ View / Controller

python - 从命令行运行函数并将参数传递给函数