2015-10-27 2 views
0

У меня есть два списка, pPop и sPop. sPop - pPop после сортировки по возрастанию численного порядка (это популяции городов).Использование циклов для сравнения двух списков, чтобы найти соответствующие значения

У меня также есть четыре других списка: pName, pType, pLat и pLong, но я на самом деле ничего не делаю с ними в этот момент времени.

Мне нужно отсортировать этот список городов по возрастающей численности населения, и мне в основном сказали сделать это, используя то, что я знаю в настоящее время, - что не так много. Я пробовал это с помощью кортежей и других вещей, но они попадают под то, чему меня не научили.

Мне нужно сравнить sPop с pPop и использовать информацию, которую я получаю, чтобы изменить порядок остальных четырех списков, поэтому я могу выплюнуть их в CSV-файле.

У меня есть идея, я просто не уверен в исполнении. I think Мне нужно запустить цикл по всем sPop, внутри которого выполняется цикл для всех pPop, который проверяет, если sPop [x] = pPop [y], (x от 0 до len (sPop)), давая некоторые как утвердительный ответ, когда это правда. Если это правда, установите pVar [y] равным sVar [x].

После написания этого, кажется, все в порядке, я просто не совсем уверен, как цикл для каждого индекса в python. Когда я, скажем,

for x in sPop 

это

x = sPop[i] i=range(0:len(sPop)) 

, когда я бы предпочел й ссылаться на самом индекс, а не значение массива/список в этом индексе.

короткая версия: цикл по индексам в массиве с

для й в массиве

где х обозначает индекс. Как? Если вы не можете, лучший способ обратиться к индексу в цикле? Уже поздно, и мой мозг жарится по этой проблеме, потратив около шести часов на то, чтобы проработать это несколько дней назад, используя разные методы.

EDIT:

Хорошо, понял. Для тех, кто каким-то образом любопытны (возможно someone'll наткнуться этот в пять лет), вы петлю над SPOP, затем над pPop, (использовать для indexX, varX в Перечислять (список) дважды), затем используйте

if varX ==varY 
sortedList.append(initialList[varY]) 

Невозможно записать фактический код, или я, вероятно, пошлю его с помощью средства проверки плагиата.

ответ

2

Чтобы получить индекс:

for index, x in enumerate(sPop): 
    print index, x 
+0

Возможно, не преподается о 'еще enumerate'. –

+0

У меня не было, но со мной все будет в порядке. На самом деле вы можете использовать материал, который мы еще не изучили, я просто указал эти параметры, чтобы люди не спрашивали меня, почему я не использовал кортежи или что-то в этом роде - они более раздражающие, чтобы забрать, чем перечислять. – Spectre1235

+0

@ Spectre1235, 'index, x' на самом деле является кортежем :) Трудно сделать много интересного в Python, не запускаясь в кортежи. –

2
for x in range(len(sPop)): 
    item = sPop[x] 
Смежные вопросы