首页 > 解决方案 > 如何在包含列表作为值的列表中找到最大值?

问题描述

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

  1. 在空间 [1,50] 中创建list1200 个随机整数并打印该数字是 10 的次数。

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

  3. 删除索引号从 99 到 130 的数据,并在删除项目后打印列表大小。
  4. 在列表中找到最大值和最小值。

我对如何找到 MAX 的第一个想法是对列表进行排序并获取最后一个值,但是因为列表中的一项是列表,所以我收到了这个错误TypeError: '<' not supported between instances of 'list' and 'int'

关于我必须做什么的任何想法?在这个问题之前,我的代码如下:

import numpy as np

#Question1
j= 0; 
list1 = list(range(200))  #decalre list1

for i in range(200): 
 list1[i] = np.random.randint(50)     #create a list of length 200 with values 0 to 50.
 if list1[i] == 10: 
   j = j+1

print("Number 10 exists ",j,"times in the list.")

#QUESTION2
list2 = list(range(1,51))  #Declare list2
list1.append(list2)  #append list2 on list1
print(len(list1)) 

#QUESTION3
for i in range(99,130):  # deletes the items with an index number from 99 to 130
   list1.pop(i)

print(len(list1))

标签: pythonpython-3.xlist

解决方案


Python提供了一个内置函数来解决这个问题:
max([2, 5, 4, 9, 3, 7])
9
我会合并列表,所以将list2的项目附加到list1,所以你只有一个轴,那么你可以使用内置函数
如果你不想要要合并列表,您可以先获取列表中列表的最大值。然后你可以取这个最大值中的最大值和你的外部列表的另一部分。

您也可以更改这一行:
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 来解决该问题:
for i in range(130, 99):

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


推荐阅读