为什么list在python中包含多于n个元素?

时间:2012-05-10 09:37:13

标签: python list

我是Python的新手。 我想在列表中输入10个元素。 下面的程序会为每个列表添加10个元素。 但是下面的程序在列表中打印出11个对象为什 我从http://www.learnpython.org/page/Basic%20Operators链接获得了此程序。 我想知道x = object(),这是什么意思?

x = object()
y = object()
i = 0
# change this code
x_list = [x]
y_list = [y]
while(i < 10):
    x_list.append((10))
    y_list.append(11)
    i = i + 1
#x_list = [x]
#y_list = [y]
big_list = x_list + y_list

print "x_list contains %d objects" % len(x_list) # prints 11 objects, #Why?
print "y_list contains %d objects" % len(y_list) # prints 11 objects, #Why?
print "big_list contains %d objects" % len(big_list)
print x_list.count(10)
print y_list.count(11)
    print big_list.count(10)
# testing code
if x_list.count(x) == 10 and y_list.count(y) == 10:
    print "Almost there..."
if big_list.count(x) == 10 and big_list.count(y) == 10:
    print "Great!"

5 个答案:

答案 0 :(得分:4)

x_list = [x] =&gt; 1个对象。 while(i < 10): x_list.append((10)) =&gt; 10个对象(0到9) 所以11完全正常。你应该设置x_list = [](空列表)不要有第一个元素。

答案 1 :(得分:3)

learnpython.org basic operators page提供了在不同上下文中使用算术运算符的一些示例,包括列表。基于快速阅读该页面中的教程,可能是页面作者所追求的答案是:

x_list = [x] * 10
y_list = [y] * 10
big_list = x_list + y_list

其中会创建一个包含10 x:s的列表。

你使用循环来做到这一点,这是一种更灵活的方式。通过使用循环来填充列表的更pythonic方式将是例如。使用列表推导:

x_list = [x for i in xrange(10)]

或使用for循环,然后您不必自己跟踪索引:

for i in xrange(10):
    x_list.append(x)

答案 2 :(得分:3)

  

下面的程序会为每个列表添加10个元素。但是下面的程序打印列表中的11个对象为什么?

因为在开始追加之前,列表中有1个元素。列表[x]包含1个元素x。 1 + 10 = 11。

  

我想知道x = object(),这是什么意思?

这正是它所说的:“x应该是调用object的结果的名称”。 object是一个类,因此调用它会创建一个实例。一个object实例正是它听起来的样子 - 只是一个对象,没有任何有趣的东西。

答案 3 :(得分:1)

object()只生成类object的新实例。首先将此元素插入x_list,然后再添加10个元素

答案 4 :(得分:0)

x_list包含X加10次10​​ = 11 ...

y_list - 相同。

当您键入x_list = [x]时,表示该列表已初始化为仅包含x的列表。