0

我是 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!"
4

5 回答 5

4

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

于 2012-05-10T09:40:42.913 回答
3

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

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)
于 2012-05-10T09:56:12.290 回答
3

下面的程序将 10 个元素附加到每个列表中。但是下面的程序在列表中打印 11 个对象,为什么?

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

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

它的意思正是它所说的:“x 应该是调用结果的名称object”。object是一个类,所以调用它会创建一个实例。实例object正是它听起来的样子——只是一个对象,没有什么有趣的地方。

于 2012-05-10T11:25:40.423 回答
1

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

于 2012-05-10T09:41:43.140 回答
0

x_list 包含 X 加上 10 乘以 10 = 11...

y_list - 相同。

当您键入时,x_list = [x]这意味着列表被初始化为仅包含其中的列表x

于 2012-05-10T09:40:13.860 回答