2012-05-10 70 views
0

我是Python的新手。 我想輸入10個元素到列表中。 下面的程序將10個元素添加到每個列表中。 但是下面的程序打印列表中的11個對象爲什麼? 我從http://www.learnpython.org/page/Basic%20Operators鏈接中獲得此程序。 我想知道x = object(),這是什麼意思?爲什麼列表在python中包含多於n個元素?

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!" 
+1

提示:他們希望您在本練習中使用'*'和'+'運算符,而不是循環。 –

+0

@lazy:我明白了這一點。感謝您的幫助。但想知道我是否會使用'loop'有什麼問題。我無法實現目標 –

回答

3

learnpython.org basic operators page提供了在包括列表在內的不同上下文中使用算術運算符的一些示例。基於快速閱讀教程在該網頁,可能的答案是,頁面作​​者是後會是:

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

這將創建一個10×列表:,它出現。

您正在使用循環來做到這一點,這是更靈活的方式。通過使用循環來填充列表的更加pythonic的方式是例如使用列表理解:

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

或使用for循環,那麼你就必須保持指數的跟蹤自己:

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

x_list包含X加10倍10 = 11 ...

y_list - 相同。

當你輸入x_list = [x]這意味着該列表被初始化爲一個只有x的列表。

4

x_list = [x] => 1個對象。 while(i < 10): x_list.append((10)) => 10個對象(0到9) 所以11是完全正常的。您應該設置x_list = [](空列表)不具有此第一個元素。

1

object()只是生成類object的新實例。您首先將此元素插入x_list,然後再添加10個元素

3

以下程序追加10元到每個名單。但是下面的程序在列表中打印11個對象爲什麼

因爲列表中有1個元素在它開始附加之前。清單[x]包含1個元素,x。 1 + 10 = 11.

我想知道x = object(),這是什麼意思?

它的意思就是說:「x將是調用object的結果的名稱」。 object是一個類,所以調用它創建一個實例。一個object實例正是它聽起來像 - 只是一個對象,沒有什麼有趣的事情。

+0

非常感謝... –

相關問題