Python中向列表追加元素得到generator object,问题出在哪里?
问题原因及解决方法
你的问题出在**append()方法的使用和生成器表达式的理解**上:
i for i in [1,2,3,4,5]是一个生成器表达式,它本身是一个可迭代对象,并非直接展开的元素集合。append()的作用是把单个元素添加到列表末尾,所以你这里相当于把整个生成器对象当成一个元素塞进了answer,自然输出的是生成器的内存地址信息。
下面是几种正确的实现方式:
方法1:用extend()替代append()
extend()可以接收任意可迭代对象(生成器、列表等),并把其中的每个元素逐个添加到列表中:
answer = [] answer.extend(i for i in [1,2,3,4,5]) print(answer) # 输出: [1, 2, 3, 4, 5]
如果直接用原列表,写法更简洁:
answer.extend([1,2,3,4,5])
方法2:遍历后逐个append()
如果一定要用append(),需要手动遍历原列表(或生成器),把每个元素单独添加:
answer = [] for i in [1,2,3,4,5]: answer.append(i) print(answer) # 输出: [1, 2, 3, 4, 5]
方法3:直接用列表推导式生成
这是最简洁的写法,直接生成目标列表:
answer = [i for i in [1,2,3,4,5]] # 或者更直接的复制写法:answer = list([1,2,3,4,5])
内容的提问来源于stack exchange,提问作者Woanton
相关产品推荐
相关产品推荐

