首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出是什么?为什么是[None,None,None]

输出是什么?为什么是[None,None,None]
EN

Stack Overflow用户
提问于 2019-01-25 14:53:01
回答 1查看 276关注 0票数 0

我在我的作业文件中发现了这段代码。但是我不能理解它的输出

代码语言:javascript
复制
arr = [[3,2,1], ['a','b','c'], [('do',), ['re'], 'mi']]
print([el.append(el[0] * 4) for el in arr])  # What is printed?
print(arr)

结果应为None、None、None

EN

回答 1

Stack Overflow用户

发布于 2019-01-25 14:58:07

append()是一种list方法,可以就地修改list。因此,a.append("foo")通过在末尾添加元素"foo"来更改a。这些方法不需要返回任何内容,所以它们不需要。

因此,如果使用使用一系列append()方法调用的返回值构造的列表理解来构建列表,则会得到一系列None

如果你不想修改原始列表,你可以这样做

代码语言:javascript
复制
>>> print([item + [item[0]*4] for item in arr])
[[3, 2, 1, 12], ['a', 'b', 'c', 'aaaa'], [('do',), ['re'], 'mi', ('do', 'do', 'do', 'do')]]

如果您确实想要修改原始列表,您应该这样做

代码语言:javascript
复制
>>> for item in arr:
...     item.append(item[0]*4)
...
>>> print(arr)
[[3, 2, 1, 12], ['a', 'b', 'c', 'aaaa'], [('do',), ['re'], 'mi', ('do', 'do', 'do', 'do')]]

但是你不应该同时做这两件事。在列表理解中使用副作用几乎总是一个坏主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54360307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档