Какова сложность во время выполнения функций списка Python?

Для людей, которым не нравится ужасно выглядящий код с php-тегами, взорванными повсюду ...

<?php
if (have_posts()):
  while (have_posts()) : the_post();
    the_content();
  endwhile;
else:
  echo '<p>Sorry, no posts matched your criteria.</p>';
endif;
?>
42
задан Marquis Wang 17 June 2009 в 07:45
поделиться

4 ответа

есть очень подробная таблица на python wiki , которая отвечает на ваш вопрос.

Однако в вашем конкретном примере вы должны использовать enumerate для получения индекса итерации в цикле. примерно так:

for i, item in enumerate(some_seq):
    bar(item, i)
35
ответ дан 26 November 2019 в 23:56
поделиться

Ответ «не определен». Язык Python не определяет базовую реализацию. Вот несколько ссылок на цепочку рассылки, которая может вас заинтересовать.

Кроме того, более питонический способ написания вашего цикла будет следующим:

def foo(some_list):
   for item in some_list:
       bar(item)
8
ответ дан 26 November 2019 в 23:56
поделиться

Списки действительно O (1) для индексации - они реализованы как вектор с пропорциональным превышением доступности, поэтому работают так, как вы ожидаете. Вероятная причина, по которой вы обнаружили этот код медленнее, чем вы ожидали, - это вызов « range (0, len (some_list)) ».

range () создает новый список указанных size, поэтому, если some_list имеет 1,000,000 элементов, вы создадите новый список из миллионов элементов заранее. Это поведение изменяется в python3 (диапазон - это итератор), эквивалент которого в python2 - xrange или даже лучше для вашего случая, enumerate

6
ответ дан 26 November 2019 в 23:56
поделиться

Пока не могу комментировать, поэтому

, если вам нужен индекс и значение, используйте enumerate:

for idx, item in enumerate(range(10, 100, 10)):
    print idx, item
3
ответ дан 26 November 2019 в 23:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: