首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的列表不迭代每一个?

为什么我的列表不迭代每一个?
EN

Stack Overflow用户
提问于 2013-12-16 21:30:34
回答 4查看 445关注 0票数 1

目前正在学习教程"Python的艰难之路“。

我正在学习列表和循环(ex32)。

在练习结束时,Zed (教程作者)告诉我们去玩,我已经这样做了。

代码语言:javascript
复制
# we can also build lists, first start with an empty one
elements = []
elements.append(range(0,6))

# then use the range function to do 0 to 5 counts
for element in elements:
    print "Adding %s to elements" % element


# now we can print them out too
for element in elements:
    print"Element was: %s" % element

这产生的输出如下:

代码语言:javascript
复制
Adding [0, 1, 2, 3, 4, 5] to elements
Element was: [0, 1, 2, 3, 4, 5]

我本以为会看到这样的事情:

代码语言:javascript
复制
Adding 0 to elements
Adding 1 to elements
Adding 2 to elements
Adding 3 to elements
Adding 4 to elements
Adding 5 to elements
Element was: 0
Element was: 1
Element was: 2
Element was: 3
Element was: 4
Element was: 5

但是Python想要在一个角色中打印出我的脚本,而不是与每个list组件连接的字符串。

我知道我可以更改脚本以准确地反映作者的脚本。

代码语言:javascript
复制
# we can also build lists, first start with an empty one
elements = []

# then use the range function to do 0 to 5 counts
for i in range(0, 6):
    print "Adding %d to the list." % i
    # append is a function that lists understand
    elements.append(i)

# now we can print them out too
for i in elements:
    print "Element was: %d" % i

但我只想知道为什么我的作品不能像预期的那样工作?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-16 21:32:34

你是在把一个列表附加到一个列表中!你只想创建这个列表!

您所需要做的就是更改以下内容:

代码语言:javascript
复制
elements = []
elements.append(range(0,6))

转到

代码语言:javascript
复制
elements = range(0,6)

你就会得到你的预期结果

为什么

当您第一次创建elements时,它是一个空白列表。然后将range(0,6)附加到空列表中。现在元素看起来像[[0,1,2,3,4,5]] (或[range(0,6)]),它是一个有一个元素的列表,一个列表。

票数 3
EN

Stack Overflow用户

发布于 2013-12-16 21:32:58

这是因为elements恰好包含一个element,即list[0, 1, 2, 3, 4, 5]list.append()将项添加到列表的末尾。

代码语言:javascript
复制
In [1]: elements = []

In [2]: elements.append(range(0,6))

In [3]: elements
Out[3]: [[0, 1, 2, 3, 4, 5]]

也许您是想http://docs.python.org/2/library/stdtypes.html#index-29列表:

代码语言:javascript
复制
In [1]: elements = []

In [2]: elements.extend(range(0, 6))

In [3]: elements
Out[3]: [0, 1, 2, 3, 4, 5]

或者换掉它?

代码语言:javascript
复制
In [4]: elements = range(0,6)

In [5]: elements
Out[5]: [0, 1, 2, 3, 4, 5]

甚至:

代码语言:javascript
复制
In [6]: elements = [element for element in range(0,6)]

In [7]: elements
Out[7]: [0, 1, 2, 3, 4, 5]

在本例中,列表理解是不必要的,但它演示了如何容易地过滤或映射这些元素。

票数 1
EN

Stack Overflow用户

发布于 2013-12-16 21:33:30

.append向列表中添加一个元素。唯一的一个元素是range(0, 6),它是[0, 1, 2, 3, 4, 5] (Johnsyweb在我之前就把它引入了)。您可以使用.extend来追加每一个。

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

https://stackoverflow.com/questions/20621296

复制
相关文章

相似问题

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