Приколы анекдоты

Python: Массивы и списки (Часть 3)

января 7, 2010 · 3:27 пп @ Alex Snet  -  Один комментарий

В качестве продолжения к Python: Массивы и списки (Часть 1) и Python: Массивы и списки (Часть 2).

В данной части будут рассмотрены:

  • Сортировка списков
  • Печать списков
  • Заметки про производительность

Сортировка списков

Метод sort позволяет отсортировать список на месте:

L.sort()

Если же Вы хотите получить копию отсортированного списка, то пользуйтесь встроенной функцией sorted:

out = sorted(L)

Метод сортировки массива .sort() более эффективен, так как Python не выделяет памяти под еще один массив.
По умолчанию алгоритм сортировки Python определяет порядок путем сравнения объектов в списке друг с другом. Вы можете переопределить алгоритм с помощью передачи дополнительного параметра – функции, которая возвращает -1 для “меньше чем”, 0 – “равный”, 1 для – “больше чем”. Для этого часто может быть полезна встроенная cmp функция:

def compare(a, b):
    return cmp(int(a), int(b)) # сравниваем числа
 
L.sort(compare)
 
def compare_columns(a, b):
    # сортировка по возрастанию индекса 0 и убыванию индекса 2
    return cmp(a[0], b[0]) or cmp(b[2], a[2])
 
out = sorted(L, compare_columns)

Кроме того, можно задать соответствие между элементами списка и ключами.

L.sort(key=int)
 
out = sorted(L, key=int)

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

Печать списков

По умолчанию список производит repr с каждой записью в нем и добавляет скобки и запятые.

print [1, 2, 3] # выведет [1, 2, 3]

Для контроля форматирования вывода можно использовать метод join, который, в свою очередь можно комбинировать с методом map:

print "".join(L) # если все элементы строковые
print ", ".join(map(str, L))
print "|".join(str(v) for v in L if v > 0)

Для печати списка строк(к примеру для записи в файл) можно использовать метод writelines:

sys.stdout.writelines(L) # Если все элементы строковые

Заметки про производительность

[ToDo]

Тэги: , , , , ,

А еще я писал про:
Python: Массивы и списки (Часть 1)
Python: Массивы и списки (Часть 2)
JS Socket connection
Возможности C++

Один комментарий → “Python: Массивы и списки (Часть 3)”


  1. progg.ru

    12 Янв, 2010

    Python: Массивы и списки (Часть 3) | Alex Snet…

    Thank you for submitting this cool story – Trackback from progg.ru…

    Ответить

Оставить свой след.

1 2 3 4 5 6 7 8 9 10