我是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!"
答案 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
的列表。