2024-03-29 09:39:05 发布
网友
我正在寻找一个列表中的最大数,然后获得元素1的位置之前,如果有人知道如何做这将是非常感谢。你知道吗
my_list = ['room', 10, 'chamber', 23, 'kitchen', 8] pos = my_list.aMethodToGetTheGreatestValuePosition() print('The biggest room is ' + my_list[pos-1])
这样就不必遍历列表多次:
my_list = ['room', 10, 'chamber', 23, 'kitchen', 8] pos = max(enumerate(my_list[1::2]), key=lambda x: x[1])[0] print('The biggest room is ' + my_list[2*pos])
它使用enumerate来获取my_list的索引,同时搜索最大值
my_list
或者你也可以用zip稍微聪明一点:
print('The biggest room is ' + max(zip(*[iter(my_list)]*2), key=lambda x: x[1])[0])
它依赖于在my_list上使用相同的迭代器将连续的值提供给zip(从另一个excellent answer借用)。这实际上是将平面列表转换为元组列表,这是存储原始数据的更好方法,如果您有以下选项:
zip
>>> list(zip(*[iter(my_list)]*2)) [('room', 10), ('chamber', 23), ('kitchen', 8)]
my_list = ['room', 10, 'chamber', 23, 'kitchen', 8] my_list[my_list.index(max(filter(lambda x: isinstance(x, int), my_list)))-1]
假设输入列表中有两个相等的最大值,则取第一个。这将是解决方案的一个限制
这里有一条路。请注意,这需要结构,即房间,然后按顺序调整大小。我不认为这是一个坏主意,因为你应该使用字典或元组列表无论如何。你知道吗
my_list = ['room', 10, 'chamber', 23, 'kitchen', 8] pos = my_list.index(max(my_list[1::2])) # 23 print('The biggest room is ' + my_list[pos-1]) # chamber
这样就不必遍历列表多次:
它使用enumerate来获取
my_list
的索引,同时搜索最大值或者你也可以用zip稍微聪明一点:
它依赖于在
my_list
上使用相同的迭代器将连续的值提供给zip
(从另一个excellent answer借用)。这实际上是将平面列表转换为元组列表,这是存储原始数据的更好方法,如果您有以下选项:假设输入列表中有两个相等的最大值,则取第一个。这将是解决方案的一个限制
这里有一条路。请注意,这需要结构,即房间,然后按顺序调整大小。我不认为这是一个坏主意,因为你应该使用字典或元组列表无论如何。你知道吗
相关问题 更多 >
编程相关推荐