Силно се надявам това да не се окаже темата за flamewars, както обикновено става в такива случаи :)
Да я захвана с въпрос относно списъци. Прието ли е да се смята, че дължината на един списък се пази някак отделно от самите му елементи, т.е. че може да бъде върната лесно, бързо и веднага, без обхождане на елементите, за да бъдат преброени?
Конкретният случай, заради който задавам въпроса, е такъв: кое ще се изпълни по-бързо за голям брой елементи в списъка:
if len(lst) > 500:
...
или:
if not lst[0] is None:
...
(да, ясно ми е, че на доста хора ще им стане ясно това, което не доизказвам - същинската причина да задавам въпроса ;) Също така ми е ясно, че за конкретния случай, заради който ми хрумна този въпрос, вероятно дължината на списъка няма да е твърде голяма и дори len() би се изпълнило за, как да кажа, "разумно" време :P Така че това попада в категорията "микрооптимизации преди изобщо да си разбрал дали имаш проблем"... но ми е интересен отговорът по принцип: дали len(списък) се пази някъде във вътрешното представяне на списъка или всеки път го обхожда)