尝试使用列表理解将字符串转换为列表。但是代码 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)
相同
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)
相同