Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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_Python 3.x_List - Fatal编程技术网

Python 如何在包含列表作为值的列表中查找最大值?

Python 如何在包含列表作为值的列表中查找最大值?,python,python-3.x,list,Python,Python 3.x,List,我有一个python类的练习,我陷入了问题4: 创建list1,在空格[1,50]中包含200个随机整数,并打印数字是10的多少倍 使用50个整数[1,2,3,…,50]创建list2,然后使用append()函数将列表连接在一起并显示大小 删除索引号为99到130的数据,删除项目后打印列表大小 在列表中查找最大值和最小值 关于如何查找MAX,我的第一个想法是对列表进行排序并获取最后一个值,但由于列表中的1项是列表,因此我得到了以下错误TypeError:“Python提供了一个内置函数来解决此

我有一个python类的练习,我陷入了问题4:

  • 创建
    list1
    ,在空格[1,50]中包含200个随机整数,并打印数字是10的多少倍

  • 使用50个整数[1,2,3,…,50]创建
    list2
    ,然后使用
    append()
    函数将列表连接在一起并显示大小

  • 删除索引号为99到130的数据,删除项目后打印列表大小
  • 在列表中查找最大值和最小值

  • 关于如何查找MAX,我的第一个想法是对列表进行排序并获取最后一个值,但由于列表中的1项是列表,因此我得到了以下错误
    TypeError:“Python提供了一个内置函数来解决此问题:
    最大值([2,5,4,9,3,7])

    9

    我会合并列表,将列表2的项目附加到列表1,这样您就只有一个轴,然后您可以使用内置函数
    如果不想合并列表,可以先获得列表中列表的最大值。然后你可以从这个最大值和你的外部列表的其他部分中取最大值

    您还可以更改此行:
    list1[i]=np.random.randint(50)

    您可以改为导入random(它是一个内置模块),并按以下方式执行:
    list1[i]=random.randint(1,50)

    但也许numpy更快。 如果要使用numpy,则需要将行更改为:
    list1[i]=np.random.randint(1,50)

    您需要更改问题3中的删除循环,因为如果您删除项目99,那么项目100就是新的项目99,因此您只删除第二个元素。您可以通过从130倒退到99来解决该问题:
    适用于范围(130,99)内的i:


    我希望我能帮助您解决这个问题。

    您需要先将列表展平,然后才能进行任何比较,因为您无法将
    列表
    int
    进行比较。为此,您可以创建一个递归函数并传递列表

    def flatten(l):
        return sum(([x] if not isinstance(x, list) else flatten(x) for x in l), [])
    
    请注意,上面代码中的
    list
    是一个受Python保护的名称,它引用了一个列表数据类型。此函数的作用是比较列表中的每个项目,并检查它是否为列表类型。如果不是,则将其添加到列表中;如果是,则再次调用该函数并转到下一项。现在可以运行以下操作:

    >>> list1 = [1, 2, 3, 4, [5, 6, 7, 8]]
    >>> flatten(list1)
    >>> [1, 2, 3, 4, 5, 6, 7, 8]
    
    现在可以运行Python内置的
    max()
    min()
    函数

    >>> max(flatten(list1))
    >>> 8
    >>> min(flatten(list1))
    >>> 1
    

    以下是添加到您的代码中的代码:
    list2=list1.pop(-1)
    列表3=列表1+列表2
    打印(最大值(列表3))
    打印(最小值(列表3))


    请注意,列表1中有两个列表!我的名为list1的列表包含200个数字和一个列表。例如:[1,4,6,…,65,[1,2,3,…,50]]。如何使max()与int和列表一起工作?这并不能准确回答问题。Python将无法将整数与列表进行比较:
    TypeError:“>”在“list”和“int”的实例之间不受支持。
    我想您误解了这个问题。您可能应该在循环中使用
    append
    来追加单个项目,而不是整个列表,因此列表保持为数字列表。还请注意,如果在循环中弹出
    pop
    ,实际上是在位置99、101、103处弹出元素……此外,按照列表的构造方式,
    min
    max
    分别保证为1和50(来自
    lst2
    的值不是随机的,永远不会被删除)好的,我试试。非常感谢你回答我的问题。我对python有点陌生,仍在尝试获取逻辑。
    >>> max(flatten(list1))
    >>> 8
    >>> min(flatten(list1))
    >>> 1