Pieniä kysymyksiä ohjelmoinnista

Piti oikein etsiä, kun Pythonia en tunne: "list comprehension" on näköjään nimi tuolle num + op for num, op in data
Ei ole, jos ympärillä ei ole hakasulkuja. Jos ympärillä on tavalliset sulut, niin se on "generator expression", joka on tavallaan "laiska list comprehension", eli operaatiot suoritetaan vasta silloin kun niitä tarvitaan, ja sitä kokonaista uutta listaa ei koskaan muodosteta.
 
Ei ole, jos ympärillä ei ole hakasulkuja. Jos ympärillä on tavalliset sulut, niin se on "generator expression", joka on tavallaan "laiska list comprehension", eli operaatiot suoritetaan vasta silloin kun niitä tarvitaan, ja sitä kokonaista uutta listaa ei koskaan muodosteta.
Eivätkö nuo sulut kuulu Stringin join() metodille?

Sama se, jännää:
Python:
>>> a = [2,3,4,5]
>>> val ** 2 for val in a
  File "<stdin>", line 1
    val ** 2 for val in a
             ^
SyntaxError: invalid syntax
>>> (val ** 2 for val in a)
<generator object <genexpr> at 0x7fd90f97e9e0>
>>> [val ** 2 for val in a]
[4, 9, 16, 25]
>>> list(val ** 2 for val in a)
[4, 9, 16, 25]
>>> list((val ** 2 for val in a))
[4, 9, 16, 25]

C++23 imitoi:
C++:
#include <print>
#include <vector>
#include <ranges>
int main() {
  std::vector a{2,3,4,5};
  println("{:}", a | std::views::transform([](int n) { return n * n; }));
}
Tulos:
Koodi:
[4, 9, 16, 25]
 

Statistiikka

Viestiketjuista
301 218
Viestejä
5 149 956
Jäsenet
81 947
Uusin jäsen
Late221

Hinta.fi

Back
Ylös Bottom