我不完全确定这种类型的数据结构的名称(表??),
T = [[(0, ''), (-1, '<'), (-2, '<')], [(-1, '^'), (1, '\\'), (0, '\\')], [(-2, '^'), (5, '^'), (0, '\\')]]
无论如何,我们在大学里使用它来处理某种类型的程序,但这并不重要,基本上我已经完成了一个非常复杂的程序,它使用了这种类型的数据结构,但现在我需要编写另一个执行非常相似的程序,如果有一种方法可以从列表列表中获取该元组列表中的最大数量,以及该值的索引,那么它基本上可以节省大量工作。此外,元组或列表的数量不固定,这将根据放入程序的字符串的长度而改变。同样重要的是要注意我不只是寻找最大数量,而是寻找该数字的索引。 有了这种类型的数据结构,
T[2][2][1]
将返回
'\ \'
在我上面给出的例子中,我将寻找
T[2][1][0]
会返回
5
非常感谢任何帮助:)
答案 0 :(得分:2)
这是一个非常简洁的方法:
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, '^')
答案 1 :(得分:0)
好老路?
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)
答案 2 :(得分:0)
家庭作业,是吗?这里有一些线索:
遍历列表和列表,并比较第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
答案 3 :(得分:-1)
T=[[(0, ''), (-1, '<'), (-2, '<')], [(-1, '^'), (1, '\\'), (0, '\\')], [(-2, '^'), (5, '^'), (0, '\\')]]
m, ma, mb=None, 0, 0
for a in xrange(len(T)):
for b in xrange(len(T[a])):
if m is None or T[a][b] > m:
m, ma, mb=T[a][b], a, b
print m, ma, mb
这将打印
(5, '^') 2 1