Wpis z mikrobloga

@DILERIUM: No wlasnie ja jestem przyzwyczajony do wielu zagniezdzen pętli for i jak probowalem sobie stawiac jakies zadania, to dluzsza chwile myslalem jak je zagniezdzic, a tu musialem pobawic sie niestety wiecej operatorami logicznymi, etc.

Zastanawia mnie tylko jak wyglada latanie po tablicach dwuwymiarowych (tutaj listach) skoro jest problem z zagniezdzaniem.

Chodzi mi o budowe samej petli :
w c++ robilismy to w stylu
for(poczatek;koniec;iterator)
W pythonie jest cos w stylu
@Almagest: Spacja, tabulatory - chodzi mi o uzywanie znakow bialych zamiast nawiasow jak czlowiek, przez co wszystko jest duzo ciezsze do pisania i staje sie irytujace, bo nie do konca wiesz jak twoj kod zostanie zinterpretowany..
bo nie do konca wiesz jak twoj kod zostanie zinterpretowany..


@pejczi: Nie występuje to zjawisko. Nie wiem czy Ty piszesz w notatniku, czy nie znasz zupełnie zasad składni Pythona, ale nie mam pojęcia o czym mówisz.

Ustaw sobie w IDE (?), żeby tabulator robił 4 spacje.

Spacja, tabulatory - chodzi mi o uzywanie znakow bialych zamiast nawiasow jak czlowiek, przez co wszystko jest duzo ciezsze do pisania i staje sie irytujace
@pejczi: To znaczy, że w c++ nie robisz w ogóle wcięć tylko stawiasz same nawiasy? Bo jak postępujesz według jakichkolwiek sensownych style guideliness, to i tak robisz wcięcia w 100% jak w Pythonie, tylko musisz dodatkowo klepać te nawiasy.
Jak nie wiesz jak zostanie zinterpretowany? Przecież wszystko jest jednoznaczne. Nawet nie ma problemu z dangling else, który trapi większość języków.
@Ilythiiri: Wiesz co, poki co to bawie sie w shellu, staram sie oswoic z sama skladnia jezyka , wczesniej mialem doswiadczenie jedynie z C++ i Java, troche Ra liznalem, przez co sam Python to dla mnie nowość, ale obok R to w zasadzie jedyny jezyk stosowany w Machine Learningu i Data Science, z czym obecnie sie bawie, wiec musze sie przelamac.
@Almagest: Nie no, oczywiscie ze robie wciecia tak aby wszystko bylo czytelne.
Rano jak wejde to pokaze przyklad moich niepewnosci jesli chodzi o znaki biale w pythonie, najpewniej sie myle i moje watpliwosci sa niesluszne, no ale moze komus kto ma podobne zagwozdki to pomoze w naprowadzeniu na poprawny tok myslowy :-)
@pejczi: Jak to mawia Raymond Hettinger, core-developer Pythona, petla for nikogo by nie dziwiła gdyby nazywała się foreach. No i czasem dziwi to, ze nie tworzy swojego scope'a, jak tutaj:

>>> x = 1

>>> for x in [2,3,4]:

... pass

...

>>> print(x)

4


...ale to chyba akurat nie jest az tak dziwne.
@pejczi: Dokładnie. Da się w pewien sposób imitować konstrukcje z innych języków, np.:

colors = ["red", "green", "blue"]
for i in range(0, len(colors)):
print(colors[i])

...ale jest to nieoptymalne i po prostu nieladne. Zamiast tego:

for color in colors:
print(color)

...jest duzo czytelniejsze i szybsze (zoptymalizowane w jezyku).

Jesli bardzo potrzebujesz bardzo indexu, to mozesz uzyć czegoś takiego jak enumerate:

for index, color in enumerate(colors):
print(index, color)

...ale nie znajdziesz dokładnie konstrukcji
@pejczi: Co rozumiesz przez "klasyczny odpowiednik fora"? Iterowanie w C++ przez iteratory sprowadza się do foreacha. Klasyczny for (taki zależny od rozmiaru i indeksu iterującego po size_t - to co nazywasz "iteratorem" w pętli tak naprawdę nim nie jest) nie ma racji bytu we współczesnym programowaniu opartym o generatory/lazy evaluation, na którym opiera się bardzo duży arsenał użytecznych feature'ów Pythona.

@3denos mnie ubiegł, ale enumerate może być tym, czego szukasz. Odnośnik
@pejczi
W c++ nie formatujesz kodu? Nie wierze.
Co jest chaotycznego w petli for?

Twoim zdaniem dodanie kilkunastu znakow w postaci srednikow, nawiasow i innych dupereli sprawia, ze kod jrst czytelniejszy??

for i in range(10):
____print(j)

Czy moze:

for(ini i;i<size;i++)
{
std::cout<<costam[i]<<std::endl;
}
pętli for, czy tez nieużywanie nawiasów


@pejczi: Wręcz odwrotnie, szczególnie zakładając, że nie jest Ci obca konstrukcja z cpp:

for (auto e:elements)
, która w .py jest zapisana jeszcze bardziej naturalnie:

for e in elements:
Wiesz co, poki co to bawie sie w shellu


@pejczi: i tu jest twój problem. Pisz w pliku, to będziesz widział co jest jak głęboko wcięte.
Akurat jednym z założeń pythona jest to, żeby interpreter był maksymalnie prosty i składnia była jednoznaczna.