优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python第104题:查找缺失列表的长度【PythonTip题库300题】

nanyue 2024-11-20 19:34:44 技术文章 6 ℃

1、编程试题:

考虑以下嵌套列表:[[1], [1, 2], [4, 5, 1, 1], [5, 6, 7, 8, 9]]。

在这种情况下,嵌套列表的长度各不相同,我们观察到给定的嵌套列表中缺少一个长度为3的列表。

编写一个程序来查找嵌套列表中缺失的列表的长度。假设只有一个缺失的列表。

定义函数length_of_missing_list(),参数为list_of_lists(嵌套列表)。

在函数中,从list_of_lists中返回缺失列表的长度。

如果没有缺失的列表,则返回None。

示例输入

[[], [1, 2], [3, 4, 5, 6], [7, 8, 9]]

示例输出

1

解释:

在测试输入中,最长列表的长度为4,最短列表的长度为0。有长度为2和3的列表,但缺少长度为1的列表。因此输出为1。

注意:输入保证只有一个缺失的列表。

2、代码实现:

可编辑代码如下:

#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
#
# Copyright (C) 2024 , Inc. All Rights Reserved
#
# @Time      : 2024/2/9 9:15
# @Author    : fangel
# @FileName  : 104.查找缺失列表的长度.py
# @Software  : PyCharm

def length_of_missing_list(list_of_lists):
    numList = []
    #步骤1:循环列表中的列表,将子列表的长度放到一个列表numList中
    for listTmp in list_of_lists:
        numList.append(len(listTmp))
    #步骤2:针对numList列表进行排序
    numList.sort()
    #步骤3:在排序完的列表中查找缺失的列表的长度(题意要求只缺失了一个列表)
    for i in range(0,len(numList)-1):
        if numList[i+1] - numList[i] > 1:
            return numList[i]+1
    #步骤4:如果没有列表缺失,就返回None
    return None

# 从用户输入中获取list_of_lists
list_of_lists = eval(input())
# 调用函数
print(length_of_missing_list(list_of_lists))

3、代码分析:

本例可以将列表中的子列表的长度加入到列表listTmp中,然后将该列表listTmp排序,最后再查看是否有缺失的值即可。

4、运行结果:

输入:

[[1], [1, 2], [3, 4, 5, 6], [7, 8, 9]]

输出:

None

输入:

[[1], [1, 2], [4, 5, 1, 1], [5, 6, 7, 8, 9]]

输出:

3

Tags:

最近发表
标签列表