Эффективность программиста сильно зависит от того, насколько хорошо он знает язык программирования и владеет им.Важно привить себе правильные приёмы программирования. И встретив ПРАВИЛЬНЫЙ приём, тут же брать его на вооружение.В этой заметке мы рассмотрим использование некоторых приёмов обработки списков.
Допустим, у нас есть список:
Функция
Допустим, у нас есть список:
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))Помни!Только правильные приёмы программирования сделают твой труд продуктивным, а процесс написания программ приятным. И не будет отчаянного желания спрятать исходники от глаз более продвинутых программистов.Ведь хороший программист — это тот программист, исходники которого приятно читать и несложно править. Не стесняйтесь пользоваться поиском и задавать вопросы. И я надеюсь что вам повезёт не повторять ошибок многих чайников, изобретавших велосипед из=за плохого знания своего программерского инструментария.
Комментариев нет:
Отправить комментарий