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