2013-12-25 2 views
-2

У меня есть два списка, как это:Управления целых чисел в списке

[2005, [4, 5, 6, 7], 2006, [4, 5, 6, 4]]

[7, 6] 

Первый список: Год последовал новый список со значениями, 2005 содержит значение 4,5,6 и 7 .
Второй список: содержит максимальные значения из списка в первом списке.

Проблема:

Для вывода каждый год, после каждого значения с ул говоря, «локальный максимум» и «все время высокий». Например, в моем случае:

2005 
4  
5  
6 
7 (local max)(all time high) 

2006  
4 
5 
6 (local max) 
4 

Я довольно застрял здесь, я пытался несколько различных подходов, но я не уверен, как на самом деле сравнивать значения, а затем прикрепить строку к нему. Думаю, мне нужно преобразовать мои значения в строки, чтобы добавить свой текст?

РЕШЕНИЕ:

еще раз К сожалению по этой теме с отсутствием информации/усилий. Я буду знать свое решение в надежде, что другие новички, как и я, узнают что-то из моего опыта.

A = [2005, [4, 5, 6, 7], 2006, [4, 5, 6, 4]] 
B = [7, 6] 
all_years = A[::2] 

while n < all_years - 1: 
    for month_list in A[1::2]: 
     k = 0 
     print(all_years[n]) 
     for every_month in month_list: 
      k += 1 
      attr = '' 
      if every_month == max(month_list): 
       attr = '(local max)' 
      if every_month == max(B): 
       attr += '(all time high)' 
      print("""") 
     n += 1 
+0

Что вы пробовали? «Вопросы, требующие кода, должны демонстрировать минимальное понимание решаемой проблемы. Включите попытки решения, почему они не работают и ожидаемые результаты. См. Также: http://meta.stackexchange.com/questions/156810/stack -overflow-вопрос-контрольный «. –

+0

Привет и пристрастия. В следующий раз я тщательно буду следовать этому руководству. Я по крайней мере отвечу на то, что решило мой вопрос и как я это сделал. – PiePiePanda

ответ

0

Вы можете использовать функцию zip, и некоторые умные список нарезку, чтобы сделать это в достаточно чистом виде.

A = [2005, [4, 5, 6, 7], 2006, [4, 5, 6, 4]] 
B = [7, 6] 
global_max = max(B) 

for year, year_list, max_year in zip(A[::2], A[1::2], B): 
    print year 
    for year_val in year_list: 
     if year_val == global_max: 
      print year_val, "(local max) (global max)"    
     elif year_val == max_year: 
      print year_val, "(local max)" 
     else: 
      print year_val 

A[::2] просто берет каждый второй элемент в A списке, начиная с первого пункта. A[1::2] делает то же самое, но начинается со второго элемента. zip просто создает новый список списков, который мы можем использовать для получения соответствий между ними.

+0

Привет, спасибо за ваш ответ. Поскольку я использую python 3.x, а также пытаюсь научиться использовать основные инструменты, я не хотел использовать эту zip-функцию. То, что решило мою проблему, было методом нарезки. Для меня это действительно захватывающе, но мне трудно запомнить все разные функции; чтобы увидеть, где я могу использовать различные инструменты для разных областей. – PiePiePanda

Смежные вопросы