Допустим, у нас есть список:
my_list = ["Andrew","Joan","Jack","Betty"]Для того, что-бы перебрать его, поэлементно мы используем цикл for:
for name in my_list: print name
Получение одновременно индекса и значение элемента из списка.
А теперь представьте, что вам нужно каждый раз получать индекс элемента и значение. В эпоху моего раннего чайничества (боюсь и теперь я многого не знаю) - я использовал такие варианты как получение индекса как метод спискаindex()и конструкцию:
for index in xrange(0,len(my_list) ):
print "{0} on position {1}".format(my_list[index],index)
Если этот метод кривой до ужаса, то вариант с index()ещё и создаёт трудноуловимую ошибку. Если в списке есть пару одинаковых элементов - вы получите каждый раз при попадании на повторяющийся элемент индекс ближайшего такого элемента:
for name in my_list:
print "{0} on position {1}".format(name,my_list.index(name))
А ведь так просто сделать правильно:for index, name in enumerate(my_list):
print "{0} on position {1}".format(name,index)
Перебор в цикле for двух списков:
Если у вас есть два списка, значения из которых надо последовательно считать в цикле одновременно, используйте функциюzip().Код примера:fruits = ['Grape', 'Apple', 'Lime']
colors = ['violet', 'red', 'green']
for fruit, color in zip(fruits, colors):
print "The color of {0} is {1}".format(fruit,color)
Что же возвращает функция zip? Смотрим на её результат:[('Grape', 'Violet'), ('Apple', 'Red'), ('Lime', 'Green')]
Сюрприз!На выходе мы видим список из последовательностей вида (fruit,color).Сортировка списка
Функцияsorted() - возвращает отсортированный список.Часто используется в виде:print sorted(set(fruits))Функция
set() возвращает последовательность.Если при вызове ей передать последовательность, она возьмёт из неё все записи, по сути вернув копию списка или иной последовательности.Функция
reversed() выстраивает записи в обратном порядке.Пример:print list(reversed(fruits))Помни!Только правильные приёмы программирования сделают твой труд продуктивным, а процесс написания программ приятным. И не будет отчаянного желания спрятать исходники от глаз более продвинутых программистов.Ведь хороший программист — это тот программист, исходники которого приятно читать и несложно править. Не стесняйтесь пользоваться поиском и задавать вопросы. И я надеюсь что вам повезёт не повторять ошибок многих чайников, изобретавших велосипед из=за плохого знания своего программерского инструментария.