如何在Python中找到这种数据结构中的最大数

2024-04-23 07:18:55 发布

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

我不完全确定这种数据结构的名称(表??)哦

T = [[(0, ''), (-1, '<'), (-2, '<')], [(-1, '^'), (1, '\\'), (0, '\\')], [(-2, '^'), (5, '^'), (0, '\\')]]

不管怎样,我们在大学里用它来做某种程序,但这并不重要,基本上我已经做了一个非常复杂的程序,它使用这种类型的数据结构,但是现在我需要写另一个程序来做一些非常类似的事,基本上,如果有一种方法可以从这个元组列表中,在一个列表列表中,以及该值的索引中获得最大值,我将节省大量的工作。此外,元组或列表的数量也不是固定的,它们将根据放入程序的字符串的长度而变化。同样重要的是要注意,我不仅要寻找最大值,还要寻找该值的索引。 对于这种数据结构

T[2][2][1]

他会回来的

'\ \'

在我上面给出的例子中,我将寻找

T[2][1][0]

它会回来的

5

非常感谢您的帮助:)


Tags: 方法字符串程序名称数据结构类型列表数量
3条回答

作业,嗯?以下是一些线索:

  • 遍历列表和列表,并比较第0个值

  • enumerate你是朋友吗

不是作业?好吧,这里有一个解决方案:)

high = 0
index = None
for i, lst in enumerate(T):
    for j, tpl in enumerate(lst):
        current = T[i][j][0]
        if current > high:
            index = i, j, 0
        high = max(high, current)

print index

这里有一个非常简洁的方法:

max((k, (i, j)) for i, lst in enumerate(T) for j, (k, _) in enumerate(lst))

对于您的示例数据:

>>> T = [[(0, ''), (-1, '<'), (-2, '<')], [(-1, '^'), (1, '\\'), (0, '\\')], [(-2, '^'), (5, '^'), (0, '\\')]]
>>> max((k, (i, j)) for i, lst in enumerate(T) for j, (k, _) in enumerate(lst))
(5, (2, 1))
>>> T[2][1]
(5, '^')

老办法好吗?你知道吗

def find_max(table):
    max_val = table[0][0][0] # something to start with
    max_index = (0, 0)
    for l in table:
        for t in l:
            if t[0] > max_val:
                max_val = t[0]
                max_index = (table.index(l), l.index(t))
    return (max_val, max_index)

相关问题 更多 >