我有一段代码应该打印出一个数字列表,并且#每次列表中有重复的数字时,打印出来应该如下所示:
列表 = [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/