Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何打印缺少数字的列表?_Python - Fatal编程技术网

Python 如何打印缺少数字的列表?

Python 如何打印缺少数字的列表?,python,Python,我有一段代码,应该打印出一个数字列表,而且每当列表上有重复的数字时,打印出来应该是这样的: 列表=[6,7,7,9] 6. 7. 8. 九, 以下是我到目前为止的情况: 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

我有一段代码,应该打印出一个数字列表,而且每当列表上有重复的数字时,打印出来应该是这样的: 列表=[6,7,7,9] 6. 7. 8. 九,

以下是我到目前为止的情况:

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]*"#"))
结果是错的:

六, 7. 8. 九,

感谢您的帮助

我认为这是可行的:

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 #
当前代码的问题是,您添加了一组期望列表2中的数字,所以计算列表2中每个数字的数量会比您期望的多出一个

这是list2在原始代码中的样子:

[6, 7, 7, 9, 6, 7, 8, 9]
这是因为对extend方法的调用采用了list2[6,7,7,9],并向其中添加了full_set[6,7,8,9]。因此,当您计算列表2中每个数字的出现次数时,您是在计算原始数字,然后是一个额外的数字,因为您已将列表2扩展为完整集。

我认为这是可行的:

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 #
当前代码的问题是,您添加了一组期望列表2中的数字,所以计算列表2中每个数字的数量会比您期望的多出一个

这是list2在原始代码中的样子:

[6, 7, 7, 9, 6, 7, 8, 9]
这是因为对extend方法的调用采用了list2[6,7,7,9],并向其中添加了full_set[6,7,8,9]。因此,当您计算list2中每个数字的出现次数时,您是在计算原始数字,然后是一个额外的数字,因为您已将list2扩展为完整集。

list2.extendfull\u集为范围内的每个数字添加一个额外的数字。您需要从结果中的元素计数中减少1。您可以在列表创建中执行此操作

result = sorted([(x, list2.count(x) - 1) for x in list3], key=lambda y: y[1])
还是在印刷品中

for elem in result:
    print("{0:>2}".format(elem[0]), "{}".format((elem[1] - 1)*"#"))
输出

6 #
7 ##
8 
9 #
list2.extendfull_集合为范围内的每个数字添加一个额外的数字。您需要从结果中的元素计数中减少1。您可以在列表创建中执行此操作

result = sorted([(x, list2.count(x) - 1) for x in list3], key=lambda y: y[1])
还是在印刷品中

for elem in result:
    print("{0:>2}".format(elem[0]), "{}".format((elem[1] - 1)*"#"))
输出

6 #
7 ##
8 
9 #

输入列表是否已排序?是否尝试将此行print{0:>2}.formattelem[0],{}.formattelem[1]*更改为print{0:>2}.formattelem[0],{}.formattelem[1]-1*输入列表是否已排序?是否尝试将此行print{0:>2}.formattelem[0],{}.formattelem[1]*更改为print{0:>2}.formattelem[0],{}.formattelem[1]-1]*