Reputation: 620
How can I make each symbol from lowercase to be paired with each symbol from digits?
lowercase = 'abcdef'
digits = '012'
The following returns generator:
(((i + (lambda x: y)(digits)) for y in digits) for i in lowercase)
What I have found is either list() or [] around generator should return the right content but neither of ones below ever worked:
print(list((((i + (lambda x: y)(digits)) for y in digits) for i in lowercase)))
print(list(((i + (lambda x: y)(digits)) for y in digits) for i in lowercase))
print(list((i + (lambda x: y)(digits)) for y in digits) for i in lowercase)
print(list(i + (lambda x: y)(digits) for y in digits) for i in lowercase)
print([(i + (lambda x: y)(digits) for y in digits)] for i in lowercase)
[<generator object <genexpr>.<genexpr> at 0x03329D80>, <generator object <genexpr>.<genexpr> at 0x03329DB0>, <generator object <genexpr>.<genexpr> at 0x03329DE0>, <generator object <genexpr>.<genexpr> at 0x03329E10>, <generator object <genexpr>.<genexpr> at 0x03329E40>, <generator object <genexpr>.<genexpr> at 0x03329E70>]
[<generator object <genexpr>.<genexpr> at 0x03329D80>, <generator object <genexpr>.<genexpr> at 0x03329DB0>, <generator object <genexpr>.<genexpr> at 0x03329DE0>, <generator object <genexpr>.<genexpr> at 0x03329E10>, <generator object <genexpr>.<genexpr> at 0x03329E40>, <generator object <genexpr>.<genexpr> at 0x03329E70>]
<generator object <genexpr> at 0x01605E70>
<generator object <genexpr> at 0x01605E70>
<generator object <genexpr> at 0x01605E70>
Upvotes: 0
Views: 54
Reputation: 18136
List comprehensions surrounded by round brackets create a generator, square brackets create a list: Btw. you could rewrite the lambda expression, using string formatting:
>>> lowercase = 'abcdef'
>>> digits = '012'
>>>
>>> ["%s%s" % (c, d) for c in lowercase for d in digits]
['a0', 'a1', 'a2', 'b0', 'b1', 'b2', 'c0', 'c1', 'c2', 'd0', 'd1', 'd2', 'e0', 'e1', 'e2', 'f0', 'f1', 'f2']
>>> ("%s%s" % (c, d) for c in lowercase for d in digits)
<generator object <genexpr> at 0x7f0d558b64b0>
Upvotes: 0
Reputation: 1153
I guess it what you want if i have understood you correctly
lowercase = 'abcdef'
digits = '012'
[letter+digit for letter in lowercase for digit in digits]
>>>['a0', 'a1', 'a2', 'b0', 'b1', 'b2', 'c0', 'c1', 'c2', 'd0', 'd1', 'd2', 'e0', 'e1', 'e2', 'f0', 'f1', 'f2']
Upvotes: 1