2013-12-25 4 views
0

У меня есть список целых списков:Печать максимальное значение для каждого списка в вложенном списке

l = [[4,5,6,7],[3,4,5,6],[10,2,3,4]] 

Выход Я ищу, как показано ниже:

List 0 
4 
5 
6 
7 Max value 
List 1 
3 
4 
5 
6 Max value 
List 2 
10 Max value 
2 
3 
4 

Код, который я придумал это:

for i in range(len(l)): 
    print "List",i 
    for p in l[i]: 
     print p if p!=max(l[i]) else p,"Max value" 

Но это дает немного другой выход с значение Max придумывают в каждом конкретном случае:

List 0 
4 Max value 
5 Max value 
6 Max value 
7 Max value 
. 
. 
. 

Куда я иду не так?

ответ

3
l = [[4,5,6,7],[3,4,5,6],[10,2,3,4]] 
for idx, items in enumerate(l): 
    mx = max(items) 
    print "List {}".format(idx) 
    for item in items: 
     print "{}{}".format(item, " Max value" if item == mx else "") 

Выходной

List 0 
4 
5 
6 
7 Max value 
List 1 
3 
4 
5 
6 Max value 
List 2 
10 Max value 
2 
3 
4 
4

Это проблема с приоритетом. "Max value" не связан с пунктом else; скорее, он интерпретируется как второй аргумент для оператора print, а else просто содержит p. Там нет никакого способа, чтобы написать заявление для печати, где количество аргументов, изменяется в зависимости от состояния, но вы можете неоднозначность его с некоторой настройки:

for i in range(len(l)): 
    print "List",i 
    for p in l[i]: 
     if p == max(l[i]): 
      print p 
     else: 
      print p, "Max value" 
+0

@Volatility: Просто заметил это. Исправление ... – user2357112

+0

Почему вы извлекаете подсписку по индексу - и не используете перечисление? – volcano

+0

@volcano: Вот как это сделал ОП. Я пошел на минимальное изменение исходного кода (и прикрутил первую версию). – user2357112

0
ix = 0  
for lista in l: 
     print "List ", ix 
     for item in lista: 
      if item == max(lista): 
       print item, " Max Value" 
      else: 
       print item 
     ix += 1 
Смежные вопросы