Tutorial by Examples: io

A generator object supports the iterator protocol. That is, it provides a next() method (__next__() in Python 3.x), which is used to step through its execution, and its __iter__ method returns itself. This means that a generator can be used in any language construct which supports generic iterable o...
The next() built-in is a convenient wrapper which can be used to receive a value from any iterator (including a generator iterator) and to provide a default value in case the iterator is exhausted. def nums(): yield 1 yield 2 yield 3 generator = nums() next(generator, None) # 1 ...
It's possible to create generator iterators using a comprehension-like syntax. generator = (i * 2 for i in range(3)) next(generator) # 0 next(generator) # 2 next(generator) # 4 next(generator) # raises StopIteration If a function doesn't necessarily need to be passed a list, you can sa...
Generator expressions are similar to list, dictionary and set comprehensions, but are enclosed with parentheses. The parentheses do not have to be present when they are used as the sole argument for a function call. expression = (x**2 for x in range(10)) This example generates the 10 first perfe...
a, b = 1, 2 # Using the "+" operator: a + b # = 3 # Using the "in-place" "+=" operator to add and assign: a += b # a = 3 (equivalent to a = a + b) import operator # contains 2 argument arithmetic functions for the examp...
a, b = 1, 2 # Using the "-" operator: b - a # = 1 import operator # contains 2 argument arithmetic functions operator.sub(b, a) # = 1 Possible combinations (builtin types): int and int (gives an int) int and float (gives a float) int and comp...
a, b = 2, 3 a * b # = 6 import operator operator.mul(a, b) # = 6 Possible combinations (builtin types): int and int (gives an int) int and float (gives a float) int and complex (gives a complex) float and float (gives a float) float and complex (gives a comple...
Python does integer division when both operands are integers. The behavior of Python's division operators have changed from Python 2.x and 3.x (see also Integer Division ). a, b, c, d, e = 3, 2, 2.0, -3, 10 Python 2.x2.7 In Python 2 the result of the ' / ' operator depends on the type of the nu...
a, b = 2, 3 (a ** b) # = 8 pow(a, b) # = 8 import math math.pow(a, b) # = 8.0 (always float; does not allow complex results) import operator operator.pow(a, b) # = 8 Another difference between the built-in pow and math.pow is that the built-in po...
Dictionaries are an unordered collection of keys and values. Values relate to unique keys and must be of the same type. When initializing a Dictionary the full syntax is as follows: var books : Dictionary<Int, String> = Dictionary<Int, String>() Although a more concise way of initia...
Add a key and value to a Dictionary var books = [Int: String]() //books = [:] books[5] = "Book 5" //books = [5: "Book 5"] books.updateValue("Book 6", forKey: 5) //[5: "Book 6"] updateValue returns the original value if one exists or nil. let previous...
Extensions can contain functions and computed/constant get variables. They are in the format extension ExtensionOf { //new functions and get-variables } To reference the instance of the extended object, self can be used, just as it could be used To create an extension of String that adds ...
Extensions can contain convenience initializers. For example, a failable initializer for Int that accepts a NSString: extension Int { init?(_ string: NSString) { self.init(string as String) // delegate to the existing Int.init(String) initializer } } let str1: NSString = &qu...
If the function parameter is None, then the identity function will be used: list(filter(None, [1, 0, 2, [], '', 'a'])) # discards 0, [] and '' # Out: [1, 2, 'a'] Python 2.x2.0.1 [i for i in [1, 0, 2, [], '', 'a'] if i] # equivalent list comprehension Python 3.x3.0.0 (i for i in [1, 0...
There is a complementary function for filter in the itertools-module: Python 2.x2.0.1 # not recommended in real use but keeps the example valid for python 2.x and python 3.x from itertools import ifilterfalse as filterfalse Python 3.x3.0.0 from itertools import filterfalse which works...
Extensions are used to extend the functionality of existing types in Swift. Extensions can add subscripts, functions, initializers, and computed properties. They can also make types conform to protocols. Suppose you want to be able to compute the factorial of an Int. You can add a computed property...
Exponentiation can be used by using the builtin pow-function or the ** operator: 2 ** 3 # 8 pow(2, 3) # 8 For most (all in Python 2.x) arithmetic operations the result's type will be that of the wider operand. This is not true for **; the following cases are exceptions from this rule: B...
The math-module contains another math.pow() function. The difference to the builtin pow()-function or ** operator is that the result is always a float: import math math.pow(2, 2) # 4.0 math.pow(-2., 2) # 4.0 Which excludes computations with complex inputs: math.pow(2, 2+0j) TypeErro...
Both the math and cmath-module contain the Euler number: e and using it with the builtin pow()-function or **-operator works mostly like math.exp(): import math math.e ** 2 # 7.3890560989306495 math.exp(2) # 7.38905609893065 import cmath cmath.e ** 2 # 7.3890560989306495 cmath.exp(2) # (...
The math module contains the expm1()-function that can compute the expression math.e ** x - 1 for very small x with higher precision than math.exp(x) or cmath.exp(x) would allow: import math print(math.e ** 1e-3 - 1) # 0.0010005001667083846 print(math.exp(1e-3) - 1) # 0.0010005001667083846 p...

Page 9 of 322