Introduced
1, generator expressions (generator expression) are also called generator derivation or generator parsing, and the usage is very similar to the list derivation, in the form generator deduction using parentheses (parentheses) as the delimiter, Instead of the square brackets used by the list deduction (square brackets).
2, the biggest difference from the list derivation is that the result of the generator derivation is a generator object. The Builder object is similar to an iterator object and has the characteristic of lazy evaluation, which only generates new elements when needed, is more efficient than the list derivation, and occupies very little space, especially for large data processing situations.
3. When using the elements of a generator object, you can convert it to a list or tuple as needed, or you can use the next () method of the Generator object or the built-in function next () to traverse it, or use the For loop to traverse the element directly. But regardless of the method that accesses its elements,
Each element can only be accessed from the forward to the back, and cannot be accessed again
4, the elements that have been accessed, and those that are accessed using subscripts are not supported. When all of the elements have been accessed, if you need to revisit the elements, you must recreate the generator object, and the enumerate, filter, map, zip, and other iterator objects have the same characteristics.
#1. Creating Builder Objectsg = ((i+2) **2 forIinchRange (10))Printg#<generator Object <genexpr> at 0x0000000003517798>#2. Converting a generator object to a tupleA =tuple (g)Printa#(4, 9, +, -------------------Bayi, 121)#3, the Generator object has traversed the end, no elementsPrintList (g)#[]#4. Recreate the Builder objectg = ((i+2) **2 forIinchRange (10))#5. Get the element using the next () method of the Generator objectPrintG.next ()#4PrintG.next ()#9#6. Use the function next () to get the elements in the builder objectPrintNext (g)# -g= ((i+2) **2 forIinchRange (10))#7. Use loops to traverse elements in the builder object directly forIteminchg:PrintItem#8, the filter object also has similar characteristicsx = Filter (None, range (20))Printx#[1, 2, 3, 4, 5, 6, 7, 8, 9, ten, one, A, A, (+), (+), +--)#9, the Map object also has similar characteristicsx = Map (str, RANGE (20))Printx#[' 0 ', ' 1 ', ' 2 ', ' 3 ', ' 4 ', ' 5 ', ' 6 ', ' 7 ', ' 8 ', ' 9 ', ' Ten ', ' one ', ' I ', ' + ', ' + ', ' + ', ' + ', ' + '
Detailed builder expressions in Python (generator expression)