尝试使用列表理解将字符串转换为列表。但是代码 return 生成器值而不是输出

Trying to use list comprehension to convert a string into list. But the code return a generator value instead of output

a='sadfaad' 
b=[] 
b.append(x for x in a) 
print(b)

它returns [<generator object <genexpr> at 0x000002042A1DA5F0>] 知道为什么会这样吗?以及我们如何使用列表理解?

要得到实际的推导结果,需要通过转成列表来耗尽生成器:

a='sadfaad' 
b=[] 
b.append([x for x in a]) 
print(b)

输出:[['s', 'a', 'd', 'f', 'a', 'a', 'd']]

如果要添加元素,请使用extend:

a='sadfaad' 
b=[] 
b.extend([x for x in a]) 
print(b)

输出:['s', 'a', 'd', 'f', 'a', 'a', 'd']

但是,除非这只是一个玩具示例,否则最好不要循环转换:

b = list(a)
print(b)

输出:['s', 'a', 'd', 'f', 'a', 'a', 'd']

你也可以像这样做一个简单的列表理解:

a='sadfaad' 
b = [x for x in a]

这将 return 中的字符列表

(x for x in a) # This will produce a generator that will yield x when called. Note '()' syntax
[x for x in a] # This will produce a list. Note the '[]' syntax

事实上,[x for x in a] 可以被认为是一个包裹在列表构造函数中的生成器表达式。 [x for x in a] 实际上与 list(x for x in a)

相同