Python列表搜索值及其位置

2024-03-29 09:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个列表中的最大数,然后获得元素1的位置之前,如果有人知道如何做这将是非常感谢。你知道吗

my_list = ['room', 10, 'chamber', 23, 'kitchen', 8]

pos = my_list.aMethodToGetTheGreatestValuePosition()

print('The biggest room is ' + my_list[pos-1])

Tags: thepos元素列表ismylistroom
3条回答

这样就不必遍历列表多次:

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的索引,同时搜索最大值

或者你也可以用zip稍微聪明一点:

print('The biggest room is ' +  max(zip(*[iter(my_list)]*2), key=lambda x: x[1])[0])

它依赖于在my_list上使用相同的迭代器将连续的值提供给zip(从另一个excellent answer借用)。这实际上是将平面列表转换为元组列表,这是存储原始数据的更好方法,如果您有以下选项:

>>> 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

相关问题 更多 >